混淆从python中的字典中获取键(和值!)

时间:2014-04-08 00:08:18

标签: python random dictionary

所以我自己有点问题。我有一本字典,我想从该字典中随机选择 这不会返回列表

random.choice()返回一个列表
random.sample()返回一个列表
random.keys()和random.values()都返回列表 我需要一个函数来返回一个键它的值。

伪代码如下:

import random
myDict = {"IronSword" : 15, "SteelSword" : 30, "Playing Cards" : 45, "Spider legs" : 60"}
d = random.functionNameHere(myDict, 1) # Same arguments as random.sample()
print d

哪些应该返回{" SteelSword" :30},而不是[' SteelSword'] 对不起,如果我有点脱节,我跳过简单的事情。我是一个中级蟒蛇,还没有进入字符串文字。任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:1)

制作列表是进行随机选择然后制作新词典的中间步骤:

 items = list(myDict.items())        # list of key/value pairs
 key, value = random.choice(items)   # pick a random pair
 print {key: value}                  # make a dictionary out of the result

希望这会有所帮助: - )

答案 1 :(得分:1)

在Python 2中,你可以这样做:

>>> dict(random.sample(myDict.items(), 1))
{'Playing Cards': 45}

random.sample会返回一个元组列表,您可以将其反馈到dict以制作包含一个条目的字典。

答案 2 :(得分:0)

random.choice将从可迭代中随机选择。

from random import choice
d = dict([choice(myDict.items())])
print d

答案 3 :(得分:0)

如果您没有看到内置内容,请写下:

def getOne():
    k = random.choice(myDict.keys())
    v = myDict[k]
    return (k,v)

测试:

>>> getOne()
('SteelSword', 30)
>>> getOne()
('Spiderlegs', 60)
>>> getOne()
('Spiderlegs', 60)
>>> getOne()
('SteelSword', 30)
>>> getOne()
('Playing Cards', 45)

答案 4 :(得分:0)

由于没有人使其行为与random.sample相似:)

import random
myDict = {"IronSword" : 15, "SteelSword" : 30, "Playing Cards" : 45, "Spider legs" : 60}
random_keys = random.sample(myDict.keys(), 2)
d = {k: myDict[k] for k in random_keys}
return d