2014-01-26 88 views

回答

5

使用列表理解在字典中的項目,該值過濾你正在尋找:

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 

現在反向查找與前向查找一樣快,但您必須首先構建反向查找字典。

+0

謝謝Clausiu和那些編輯 – user1813564

相關問題