这是我目前的代码。
HP = {'Char':'60', 'Squir':'50', 'Pika':'80', 'Eve':'50', 'Bulb':'70', 'Clef':'100'}
我的字典非常简单。它是:
{{1}}
所有这些都已定义。
如何获取从字典中随机选择的值
答案 0 :(得分:3)
第一种方法是使用dict.popitem
:
从字典中删除并返回任意(键,值)对。
popitem()
对于破坏性地迭代字典很有用,就像在集合算法中经常使用的那样。如果字典为空,则调用popitem()
会引发KeyError
。
请注意,此方法随机性实际上来自哈希算法和python dict
元素布局的实现。这比随机性更隐蔽。
第二种方式,真正'随机',正在使用random.choice
。它不会修改dict,因为在提供给它的列表中选择随机索引:
import random
hp = {'Char':'60', 'Squir':'50', 'Pika':'80', 'Eve':'50', 'Bulb':'70', 'Clef':'100'}
print(random.choice(list(hp.keys())))
工作原理说明:
>>> random.choice(list(HP.keys()))
'Pika'
>>> random.choice(list(HP.keys()))
'Clef'
>>> random.choice(list(HP.keys()))
'Pika'
此列表是从.keys()
构建的,但是当您需要配对时(例如来自popitem()
),您可以使用.items()
:
>>> random.choice(list(HP.items()))
('Clef', '100')
>>> random.choice(list(HP.items()))
('Pika', '80')
>>> random.choice(list(HP.items()))
('Char', '60')
同样,当然.values()
只会生成dict
项的右手元素,因此不会像.keys()
或{{1那样让您满意确实。
PS:那么如果你需要重现prev。运行,您可以使用random.seed
答案 1 :(得分:2)
这取决于你对“价值”的意思。字典是一组key,value
对,因此从技术上讲,字典的值只是字符串'50', '60', '50', '100', '70', '80'
,而键是字符串'Eve', 'Char', 'Squir', 'Clef', 'Bulb', 'Pika'
。
您可以使用HP.keys()
和HP.values()
来收集这些集合,并且可以使用list()
将这些集合转换为列表。然后,您可以使用random.choice
获取随机值。
所以要从你的字典中获取一个随机密钥(它看起来就像你真正想要的那样),你可以这样做:
import random
keys = HP.keys()
key_list = list(keys)
choice = random.choice(key_list)
或者,更简洁:
import random
choice = random.choice(list(HP.keys()))
然后,您可以使用HP[choice]