[英]Python: Return all values that corresponds to a given key inside a dictionary
我有下面的字典,其中的鍵對應於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']
將以任何順序打印'蜥蜴'和'紙'。 最好以列表形式返回。
所以我嘗試了列表理解,
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']
為什么不將具有單個鍵的組分組到列表中?
例如)
this_defeats_that = {'scissors': ['paper' , 'lizard'] , 'paper': ['rock', 'spock' ]
...}
要追溯,
for i in this_defeats_that['scissors']:
print i
這樣就可以了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.