Python:返回字典中与给定键对应的所有值

2024-04-29 19:11:35 发布

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

我有下面的字典,其中的键对应于一个值,这个值在石头、布、剪刀、蜥蜴斯波克的规则中被打败了。因此。”剪刀打败了纸和蜥蜴。在

this_defeats_that = {'scissors': 'paper',
                     'paper': 'rock',
                     'rock': 'lizard',
                     'lizard': 'spock',
                     'spock': 'scissors',
                     'scissors': 'lizard',
                     'lizard': 'paper',
                     'paper': 'spock',
                     'spock': 'rock',
                     'rock': 'scissors'
}

但是,我发现当我

^{pr2}$

只印了“蜥蜴”。进一步的研究表明,无论我如何构造字典,print语句只会打印与给定键对应的最后一个值。在

我需要的是打印所有相关的值,以便

 # Example, this behavior should be consistent regardless of key.
print this_defeats_that['scissors']

将按任何顺序打印“蜥蜴”和“纸”。最好以列表形式返回。在

所以我试着理解列表

print [value for key, value in this_defeats_that.iteritems() if key == 'scissors']

但它也只返回与键对应的最后一个值,即“lizard”。 我现在不知道该怎么办,急需帮助。在


Tags: key列表字典thatvaluethispaperprint
2条回答

必须更改存储映射的方式。python中的Dictionary是一个关键:值映射,键是唯一的。在

请考虑为每个唯一键生成一个值列表:

>>> this_defeats_that = {'scissors': ['paper', 'lizard'],
                         'paper': ['rock', 'spock'],
                         'lizard': ['spock', 'paper'],
                         'spock': ['scissors', 'rock'],
                         'rock': ['scissors', 'lizard']}
>>> this_defeats_that['scissors']
['paper', 'lizard']

你为什么不把那些只有一个键的组合成一个列表呢?在

例如)

this_defeats_that = {'scissors': ['paper' , 'lizard'] , 'paper': ['rock', 'spock' ] 
    ...}

为了重审

^{pr2}$

这就是诀窍

相关问题 更多 >