我如何从字典中得到一个随机对?我正在制作一款游戏,玩家需要猜测一个国家的首都,我需要随机出现问题。

字典看起来像{'VENEZUELA':'CARACAS'}

我该怎么做呢?


当前回答

如果你不想使用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'

其他回答

因为最初的帖子想要一对:

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()))

在现代版本的Python中(从3开始),方法dict.keys(), dict.values()和dict.items()返回的对象是视图对象*。hey可以被迭代,所以直接使用random。选择是不可能的,因为现在他们不是一个列表或集合。

一种选择是使用列表理解来完成random.choice的工作:

import random

colors = {
    'purple': '#7A4198',
    'turquoise':'#9ACBC9',
    'orange': '#EF5C35',
    'blue': '#19457D',
    'green': '#5AF9B5',
    'red': ' #E04160',
    'yellow': '#F9F985'
}

color=random.choice([hex_color for color_value in colors.values()]

print(f'The new color is: {color}')

引用:

*Python 3.8:标准库文档-内置类型:字典视图对象 Python 3.8:数据结构-列表推导式

因为这是家庭作业:

签出random.sample(),它将从列表中选择并返回一个随机元素。可以使用dict.keys()获得字典键列表,使用dict.values()获得字典值列表。

一种方法是:

import random
d = {'VENEZUELA':'CARACAS', 'CANADA':'OTTAWA'}
random.choice(list(d.values()))

编辑:在最初的帖子发布几年后,这个问题被修改了,现在是一对,而不是一个。最后一行现在应该是:

country, capital = random.choice(list(d.items()))