dict
からランダムなペアを取得するにはどうすればよいですか?国の首都を推測する必要があるゲームを作っています。ランダムに表示される質問が必要です。
dict
は{'VENEZUELA':'CARACAS'}
のように見えます
これどうやってするの?
1つの方法(Python 2. *の場合)は次のとおりです。
import random
d = {'VENEZUELA':'CARACAS', 'CANADA':'OTTAWA'}
random.choice(list(d.keys()))
EDIT:質問は元の投稿の数年後に変更され、単一のアイテムではなくペアを要求するようになりました。最終行は次のようになります。
country, capital = random.choice(list(d.items()))
>>> import random
>>> d = dict(Venezuela = 1, Spain = 2, USA = 3, Italy = 4)
>>> random.choice(d.keys())
'Venezuela'
>>> random.choice(d.keys())
'USA'
辞書(国)のkeys
で random.choice を呼び出すことにより。
これを試して:
import random
a = dict(....) # a is some dictionary
random_key = random.sample(a, 1)[0]
これは間違いなく機能します。
Random.choice()を使用したくない場合は、次の方法を試すことができます。
>>> list(myDictionary)[i]
'VENEZUELA'
>>> myDictionary = {'VENEZUELA':'CARACAS', 'IRAN' : 'TEHRAN'}
>>> import random
>>> i = random.randint(0, len(myDictionary) - 1)
>>> myDictionary[list(myDictionary)[i]]
'TEHRAN'
>>> list(myDictionary)[i]
'IRAN'
元の投稿ではpairが必要だったため:
import random
d = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'}
country, capital = random.choice(list(d.items()))
(python 3スタイル)
これはPython 2およびPython 3で機能します:
ランダムキー:
random.choice(list(d.keys()))
ランダムな値
random.choice(list(d.values()))
ランダムなキーと値
random.choice(list(d.items()))
私はあなたがクイズのようなアプリケーションを作っていると仮定しています。この種のアプリケーションのために、次のような関数を作成しました。
def shuffle(q):
"""
The input of the function will
be the dictionary of the question
and answers. The output will
be a random question with answer
"""
selected_keys = []
i = 0
while i < len(q):
current_selection = random.choice(q.keys())
if current_selection not in selected_keys:
selected_keys.append(current_selection)
i = i+1
print(current_selection+'? '+str(q[current_selection]))
questions = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'}
の入力を指定して関数shuffle(questions)
を呼び出すと、出力は次のようになります。
ベネズエラ? CARACAS カナダ?トロント
オプションをシャッフルすることで、これをさらに拡張できます
これは宿題だから:
random.sample()
をチェックして、リストからランダムな要素を選択して返します。 dict.keys()
を使用して辞書キーのリストを取得し、dict.values()
を使用して辞書値のリストを取得できます。
これを試してください(アイテムのrandom.choiceを使用)
import random
a={ "str" : "sda" , "number" : 123, 55 : "num"}
random.choice(list(a.items()))
# ('str', 'sda')
random.choice(list(a.items()))[1] # getting a value
# 'num'
b = { 'video':0, 'music':23,"picture":12 }
random.choice(Tuple(b.items())) ('music', 23)
random.choice(Tuple(b.items())) ('music', 23)
random.choice(Tuple(b.items())) ('picture', 12)
random.choice(Tuple(b.items())) ('video', 0)