1

我正在尝试使用 python 3.2 创建字典数据类型。我正在使用随机方法在 mydict 中随机选择一个值并打印出该值。但是,我也想打印键(例如动物:大象),但我只能打印键或值。我该怎么做?

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

2 回答 2

4

mydict.values(),不出所料,给你的价值观。您可以使用mydict.items()来获取键/值对(作为元组)。

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

category = random.choice(list(mydict.keys())
item = random.choice(mydict[category]))
print category, item
于 2012-10-14T06:16:46.850 回答
0

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)
于 2012-10-14T06:34:23.440 回答