访问词典中列表中的随机项

时间:2012-11-03 09:48:02

标签: python python-3.x

鉴于以下内容:

topic = {'Countries': ['Somalia', 'Bermuda'],
         'Cars'     : ['Tesla', 'Lotus']
}

如何从随机词典中的列表中访问随机项?尝试将每个列表中的元素组合成一个列表,但这并不是我需要的。

2 个答案:

答案 0 :(得分:2)

random.choice上使用.keys(),然后再次使用与所选键相关联的值:

import random

key = random.choice(list(topic.keys()))
value = random.choice(topic[key])

我们需要将.keys()(字典视图)的结果转换为一个列表,以便您能够从中进行随机选择。

演示:

>>> import random
>>> topic = {'Countries': ['Somalia', 'Bermuda'],
...          'Cars'     : ['Tesla', 'Lotus']
... }
>>> key = random.choice(list(topic.keys()))
>>> value = random.choice(topic[key])
>>> value
'Tesla'

答案 1 :(得分:1)

这是一个在所有项目上均匀随机的解决方案 - 如果有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)