我是新來的python,我有一個問題。我試圖找到具有價值的鑰匙;然而,鍵具有多個值。查找具有多個值的鍵的字典中的常見值
d = {
'a': ['john', 'doe', 'jane'],
'b': ['james', 'danny', 'john'],
'C':['john', 'scott', 'jane'],
}
我想找到d值john
和領取鑰匙A,B和C或找到jane
並獲得鑰匙a和c。
我是新來的python,我有一個問題。我試圖找到具有價值的鑰匙;然而,鍵具有多個值。查找具有多個值的鍵的字典中的常見值
d = {
'a': ['john', 'doe', 'jane'],
'b': ['james', 'danny', 'john'],
'C':['john', 'scott', 'jane'],
}
我想找到d值john
和領取鑰匙A,B和C或找到jane
並獲得鑰匙a和c。
這可以使用list comprehension輕鬆完成。它遍歷包含所有鍵/值對(for key,val in d.items()
)的字典項目列表中的每個鍵/值對,並僅選擇目標字符串包含在值列表中的對(if 'john' in val
),從結果中構建列表鍵([ key ... ]
)。
>>> [ key for key,val in d.items() if 'john' in val ]
['b', 'a', 'C']
>>> [ key for key,val in d.items() if 'jane' in val ]
['a', 'C']
Thanks @David。這工作完美 –
所以你必須要通過字典東西,如果查找的關鍵字是在項目列表中,則相應的鍵必須存儲在一個列表,該列表中有顯示。
d = {'a':['john', 'doe', 'jane'], 'b': ['james', 'danny', 'john'], 'C':['john', 'scott', 'jane'],}
find ='jane'
因此,這是什麼邏輯是如何用Python編寫的
print ([m for m in d.keys() if find in d[m]])
,它會給下面的輸出
['a', 'C']
如果這真的是你想要做什麼,你的字典是上下翻轉。如果你要用名字查找(例如'john'),那應該是關鍵。 –
@idjaw我試了下面的代碼。我根本沒有工作。 在d.keys()中的名稱: 如果d [name] =='john': 打印名稱 –
@ import.zee代碼不起作用的原因是這些值是多個名稱的列表,而不是個人名稱字符串。所以你不能測試'if d [name] =='john''是因爲'['john','doe','jane']!='john''。相反,您需要使用'in'列表中的memebership測試運算符:'if'john'in d [name]' –