簡體   English   中英

Python:返回與字典內給定鍵對應的所有值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM