假设我有一个任意嵌套的字典:
d = {
11: {
21: {31: 'a', 32: 'b'},
22: {31: 'a', 34: 'c'},
},
12: {
1: {2: 3}
}
}
还有一个键列表,其位置告诉我要在哪个嵌套字典中查找每个键:
keys = [11, 21, 31]
# keys = [11, 23, 44]
是否有一个简单的班轮来做到这一点?我查看了下面列出的问题,它们很相似,但并不是我真正想要的。我自己也尝试过并想出了这个:
from functools import reduce
def lookup(d, key):
return d.get(key, {}) if d and isinstance(d, dict) else None
def fn(keys, d):
return reduce(lookup, keys, d)
print(fn(keys, d)) # prints 'a'
这样做的问题是,在第二个键列表的情况下(请参阅注释掉的键),它会继续进一步查找嵌套键,即使没有找到更高级别的键,并且继续是没有意义的。reduce
一旦我找到最终匹配或失败,我该如何停止(下面列出的问题之一解决了它,但我不能真正将它应用到我的用例中......或者我可以吗?)?还有其他想法吗?哦,我只想使用官方 python 库来完成这个。所以 nonumpy
等pandas
,但是functools
,itertools
都很好
是否有一个简单的单行代码来访问 Python 中嵌套字典的每个元素?
中途停止 Reduce() 操作。进行部分运行总和的功能方式
谢谢!