Python中具有随机性的指令式数据类型

2024-04-26 00:11:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Python3.2创建一个字典数据类型。我使用random方法在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())))

Tags: 方法字典randommydict数据类型fruitchoiceelephant
2条回答

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

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

我想你真正想做的是把所有键的所有值组合起来,随机选择其中一个值,然后找出它属于哪个键。为此,首先需要选择所有值以随机化它们:

^{pr2}$

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

>>> 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)

毫不奇怪,mydict.values()会给您这些值。您可以使用mydict.items()来获取键/值对(作为元组)。在

编辑:听起来你想做这样的事情:

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

相关问题 更多 >