查找Python dicts链中的密钥?

时间:2017-10-09 10:49:21

标签: python dictionary key lookup chain

在Python中是否有内置方法可以在k dict中查找密钥d,如果密钥不存在,请在另一个密码中查找{ {1}} dict

这可以扩展到e s dict =>的任意长链。 d => e => ...?

3 个答案:

答案 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'的查找。

Python 3.3中引入了

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:
    ...