我有以下字典,其中的键对应于在 Rock Paper Scissors Lizard Spock 规则中它击败的值。因此。 “剪刀”打败“纸”和“蜥蜴”。
this_defeats_that = {'scissors': 'paper',
'paper': 'rock',
'rock': 'lizard',
'lizard': 'spock',
'spock': 'scissors',
'scissors': 'lizard',
'lizard': 'paper',
'paper': 'spock',
'spock': 'rock',
'rock': 'scissors'
}
然而,我发现当我
print this_defeats_that['scissors']
只打印“蜥蜴”。进一步的调查表明,无论我如何构造字典,print 语句都只会打印与给定键对应的最后一个值。
我需要它打印的是所有相关的值,以便
# Example, this behavior should be consistent regardless of key.
print this_defeats_that['scissors']
将按任何顺序打印 'lizard' 和 'paper'。最好以列表形式返回。
所以我尝试了列表理解,
print [value for key, value in this_defeats_that.iteritems() if key == 'scissors']
但它也只返回与键对应的最后一个值,即“蜥蜴”。
我现在不知道如何继续,并且急需帮助。
最佳答案
您必须更改存储映射的方式。 python中的字典是一个键:值映射,键是唯一的。
考虑为每个唯一键创建一个值列表:
>>> this_defeats_that = {'scissors': ['paper', 'lizard'],
'paper': ['rock', 'spock'],
'lizard': ['spock', 'paper'],
'spock': ['scissors', 'rock'],
'rock': ['scissors', 'lizard']}
>>> this_defeats_that['scissors']
['paper', 'lizard']
关于Python:返回与字典中给定键对应的所有值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18079087/