0
可以說我們有一個字典{'a':1,'b':0,'c':1,'d':0}
,我們如何獲得所有的值爲0的鍵?我嘗試使用for循環來檢查每個項目的值,並將密鑰返回到列表中,但它完全沒有意義。如何從字典中獲得具有特定值的所有項目?
可以說我們有一個字典{'a':1,'b':0,'c':1,'d':0}
,我們如何獲得所有的值爲0的鍵?我嘗試使用for循環來檢查每個項目的值,並將密鑰返回到列表中,但它完全沒有意義。如何從字典中獲得具有特定值的所有項目?
使用列表理解在字典中的項目,該值過濾你正在尋找:
def keys_of_value(d, value):
return [key for key, val in d.items() if val == value]
用法:
>>> keys_of_value({'a':1,'b':0,'c':1,'d':0}, 0)
['b', 'd']
請注意,這需要你通過所有迭代字典中的項目。如果你需要經常這樣做,你可能想建立一個反向查找字典,這與值映射值的所有鍵的列表:
def reverse_dict(d):
res = {}
for key, val in d.items():
res.setdefault(val, []).append(key)
return res
用法:
>>> rev = reverse_dict({'a': 1, 'b': 0, 'c': 1, 'd': 0})
>>> rev
{0: ['b', 'd'], 1: ['a', 'c']}
>>> rev[0]
['b', 'd']
>>> rev[1]
['a', 'c']
>>> rev[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 2
現在反向查找與前向查找一樣快,但您必須首先構建反向查找字典。
謝謝Clausiu和那些編輯 – user1813564