2017-11-16

Python dict(辞書型)オブジェクトでshuffleする方法

# やりたいこと

- list型のオブジェクトは、中の値の順番を変えるShuffleメソッドを持っている
- しかし、dict型の変数には、中の配列をシャッフルするShuffleメソッドを持っていない
- なので、dict型のメソッドでも、shuffleできるようにしたい
- 引数にdict型のオブジェクトを入れると、shuffleしてくれる関数を作成する

ちなみにlist型のオブジェクトはこんな感じ

# リスト型
li1 = [("a", 3), ("b", 2), ("c", 5)]

で、これをdict型に直すとこんな感じ

di1 = dict(li1)
# => {'b': 2, 'c': 5, 'a': 3}

# ソースコード



shuffleDict.py

#1 パッケージのインポート

import random

#2 適当な辞書型(dict型)オブジェクトの作成

family = {

  "sazae":"サザエ",
  "katsuo":"カツオ",
  "masuo":"マスオ",
  "tara":"タラ",
  "hune":"フネ",
  "wakame":"ワカメ",
  "namihei":"波平",
  "tama":"タマ"

};

#3 辞書型オブジェクトをシャッフルできるメソッド

def shuffleDict(d):

  keys = list(d.keys())
  random.shuffle(keys)
  [(key, d[key]) for key in keys]
  random.shuffle(keys)
  [(key, d[key]) for key in keys]
  random.shuffle(keys)
  keys = [(key, d[key]) for key in keys]
  #keys = d(keys)
  return dict(keys)

#4 元の辞書型オブジェクト
print(family)

#5 シャッフル後の辞書型オブジェクト
print(shuffleDict(family))

実行結果はこちら

{'tara': 'タラ', 'wakame': 'ワカメ', 'tama': 'タマ', 'katsuo': 'カツオ', 'masuo': 'マスオ', 'hune': 'フネ', 'namihei': '波平', 'sazae': 'サザエ'}
{'tara': 'タラ', 'masuo': 'マスオ', 'tama': 'タマ', 'katsuo': 'カツオ', 'wakame': 'ワカメ', 'hune': 'フネ', 'namihei': '波平', 'sazae': 'サザエ'}


注目の投稿

 PythonのTweepyを利用して、Twitter APIを利用している。 その中で、ハマったポイントをメモしておく。 まず、Searchに関して。 Twitter検索は、クライアントアプリ側では、全期間の検索が可能になっている。 一方で、APIを利用する際は、過去1週間しか...