在Python中是否有内置方法可以在k
dict
中查找密钥d
,如果密钥不存在,请在另一个密码中查找{ {1}} dict
?
这可以扩展到e
s dict
=>的任意长链。 d
=> e
=> ...?
答案 0 :(得分:3)
您可以使用collections.ChainMap
:
from collections import ChainMap
d = ChainMap({'a': 1, 'b': 2}, {'b': 22}, {'c': 3})
print(d['c'])
print(d['b'])
这将输出:
3 2
请注意,地图中的第一个字典以及未搜索的其余字典满足了对键'b'
的查找。
ChainMap
答案 1 :(得分:2)
如果你正在使用Python< 3.3,ChainMap
无法使用。
这不太优雅,但有效:
a = {1: 1, 2: 2}
b = {3: 3, 4: 4}
list_dicts = [a, b]
def lookup(key):
for i in list_dicts:
if key in i:
return i[key]
raise KeyError
lookup(1) # --> 1
lookup(4) # --> 4
您将所有dicts添加到列表中,并使用方法查看它们。
答案 2 :(得分:1)
可能如下:
if k in d:
pass
elif k in e:
pass
elif k in f:
...