次の場合:
topic = {'Countries': ['Somalia', 'Bermuda'],
'Cars' : ['Tesla', 'Lotus']
}
ランダム化された辞書内のリストからランダムなアイテムにアクセスするにはどうすればよいですか?各リスト内の要素を組み合わせてリストを作成してみましたが、それは私が必要としているものではありません。
次の場合:
topic = {'Countries': ['Somalia', 'Bermuda'],
'Cars' : ['Tesla', 'Lotus']
}
ランダム化された辞書内のリストからランダムなアイテムにアクセスするにはどうすればよいですか?各リスト内の要素を組み合わせてリストを作成してみましたが、それは私が必要としているものではありません。
で使用random.choice
し.keys()
、次に選択したキーに関連付けられた値でもう一度使用します。
import random
key = random.choice(list(topic.keys()))
value = random.choice(topic[key])
(dictビュー)の結果を.keys()
リストに変換して、それらからランダムに選択できるようにする必要があります。
デモ:
>>> import random
>>> topic = {'Countries': ['Somalia', 'Bermuda'],
... 'Cars' : ['Tesla', 'Lotus']
... }
>>> key = random.choice(list(topic.keys()))
>>> value = random.choice(topic[key])
>>> value
'Tesla'
これは、すべてのアイテムで均一にランダムなソリューションです。1000台の車と1つの国がある場合、車をより頻繁に選択します。
import random
# build a list of containing key/value pairs
values = [(k, v) for k, values in topic.items() for v in values]
# pick one of these
key, value = random.choice(values)