我正在尝试使用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())))
答案 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)