mydict.values()
将打印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)