在Python中随机的字典数据类型

时间:2012-10-14 06:15:25

标签: python python-3.x

我正在尝试使用python 3.2创建字典数据类型。我使用随机方法随机选择mydict中的值并打印出值。但是,我也想打印密钥(例如Animal:elephant),但我只设法打印密钥或值。我该怎么做呢?

mydict = {'Animal': ('elephant', 'giraffe', 'rhinoceros', 'hippopotamus', 'leopard'),
          'Fruit': ('strawberry', 'mango', 'watermelon', 'orange', 'durian')}
random_word = random.choice(random.choice(list(mydict.values())))

2 个答案:

答案 0 :(得分:4)

不出所料,

mydict.values()为您提供了价值观。您可以使用mydict.items()来获取键/值对(作为元组)。

编辑:听起来你正试图做这样的事情:

category = random.choice(list(mydict.keys())
item = random.choice(mydict[category]))
print category, item

答案 1 :(得分:0)

mydict.values()会打印,可能不是您所期望的:

>>> random.choice(mydict.values())
('strawberry', 'mango', 'watermelon', 'orange', 'durian')
>>> random.choice(mydict.values())
('elephant', 'giraffe', 'rhinoceros', 'hippopotamus', 'leopard')

我认为你真正想做的是组合所有键的所有值,随机选择一个值,然后找出它属于哪个键。要做到这一点,首先需要选择所有值来随机化它们:

>>> for i in mydict.values():
...    for v in i:
...       values_list.append(v)
...
>>> values_list
['strawberry', 'mango', 'watermelon', 'orange', 'durian', 'elephant', 'giraffe',
 'rhinoceros', 'hippopotamus', 'leopard']

现在,您可以获得随机值:

>>> random.choice(values_list)
'leopard'
>>> random.choice(values_list)
'strawberry'
>>> random.choice(values_list)
'hippopotamus'

下一步是找出它属于哪个键:

>>> i = random.choice(values_list)
>>> ''.join("%s: %s" % (k,i) for k in mydict if i in mydict[k])
'Fruit: watermelon'

默认情况下,当您遍历字典时,您将获得密钥:

>>> for i in mydict:
...    print i
...
Fruit
Animal

此行''.join("%s: %s" % (k,i) for k in mydict if i in mydict[k])是此循环的长版本:

i = random.choice(values_list)
for k in mydict:
    if i in mydict[k]:
       print "%s: %s" % (k,i)