使用默认值的Python嵌套字典查找

2024-09-24 04:18:49 发布

您现在位置:Python中文网/ 问答频道 /正文

>>> d2
{'egg': 3, 'ham': {'grill': 4, 'fry': 6, 'bake': 5}, 'spam': 2}
>>> d2.get('spamx',99)
99
>>> d2.get('ham')['fry']
6

我想得到火腿内炸薯条的值,如果没有,就得到值,99或88作为第二个例子。但是怎么做呢?在


Tags: geteggspam例子d2ham火腿bake
3条回答

如果您经常需要这样做,可以编写一个helper函数

def get_nested(d, list_of_keys, default):
    for k in list_of_keys:
        if k not in d: 
            return default
        d=d[k]
    return d

print get_nested(d2,['ham','spam'],99)
print get_nested(d2,['ham','grill'],99)
d2.get('ham', {}).get('fry', 88)

在现实生活中,我可能会把它分解成几句话。在

^{pr2}$

要使get的默认值正常工作,第一个默认值需要是一个字典,以便在第一个调用失败时正确地链接.get调用。在

d.get('ham',{}).get('fry',88)

你也可以试试,除了布洛克

^{pr2}$

相关问题 更多 >