如何在python字典中获得一个随机值
我怎样才能从dict
随机获得一对? 我正在做一个游戏,你需要猜测一个国家的首都,我需要随机出现的问题。
dict
看起来像{'VENEZUELA':'CARACAS'}
我该怎么做?
一种方法是:
import random d = {'VENEZUELA':'CARACAS', 'CANADA':'OTTAWA'} random.choice(d.keys())
编辑 :这个问题是原来的职位后几年改变,现在要求一对,而不是一个单一的项目。 最后一行现在应该是:
country, capital = random.choice(list(d.items()))
如果你不想使用random
模块,你也可以尝试popitem() :
>> d = {'a': 1, 'b': 5, 'c': 7} >>> d.popitem() ('a', 1) >>> d {'c': 7, 'b': 5} >>> d.popitem() ('c', 7)
由于dict
不保存顺序 ,所以使用popitem
可以从中得到任意的(但不是严格意义上的)顺序的项目。
还要记住popitem
从字典中删除键值对,如文档中所述。
popitem()有助于破坏性地迭代字典
>>> 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 。
由于这是作业:
检查一下random.sample()
,它将从列表中select并返回一个随机元素。 您可以使用dict.keys()
和dict.keys()
字典值列表。
如果你不想使用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 a = dict(....) # a is some dictionary random_key = random.sample(a, 1)[0]
这绝对有效。
我假设你正在做一个测验类应用程序。 对于这种应用程序,我写了一个函数如下:
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'}
的inputquestions = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'}
并调用函数shuffle(questions)
然后输出结果如下:
委内瑞拉? 加拉加斯 加拿大? 多伦多
您也可以通过改变选项来进一步扩展它
我希望这会有所帮助。
来源: RADIUS的圈子
由于原来的post想要这对 :
import random d = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'} country, capital = random.choice(list(d.items()))
(python 3样式)
试试这个(从项目中使用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'