Python 任何遍历嵌套字典的函数式编程方法?
我正试图找到更好的方法来实现这一点:Python 任何遍历嵌套字典的函数式编程方法?,python,dictionary,functional-programming,Python,Dictionary,Functional Programming,我正试图找到更好的方法来实现这一点: d = {"a": {"b": {"c": 4}}} l = ["a", "b", "c"] for x in l: d = d[x] print (d) # 4 我正在学习函数式编程,所以我只是在尝试随机出现的例子:)使用: 或者更好地使用: 演示: Python3将reduce()函数从内置移到内置。您正在间接调用d=d[“c”],这是4…您好,谢谢您的回答,但我想我没有正确地向您解释我的问题。请在下面回答。无论如何,谢谢你的帮助:)干杯!
d = {"a": {"b": {"c": 4}}}
l = ["a", "b", "c"]
for x in l:
d = d[x]
print (d) # 4
我正在学习函数式编程,所以我只是在尝试随机出现的例子:)使用:
或者更好地使用:
演示:
Python3将
reduce()
函数从内置移到内置。您正在间接调用d=d[“c”],这是4…您好,谢谢您的回答,但我想我没有正确地向您解释我的问题。请在下面回答。无论如何,谢谢你的帮助:)干杯!相关:为什么不简单地dict.get
?@thg435:两者都起作用,如果一个键丢失,都会导致错误,但是dict.\uuuu getitem\uuuuuu
错误会更清楚,我会说(KeyError
vs.AttributeError
)。从风格的角度来看,使用dict.\uu getitem\uuu
还是dad,k:d[k]
这里?@Eric:还有第三个选项:dict.get
。我更喜欢这里的dict.\uuu getitem\uuuu
;当缺少一个键时,错误消息会更清楚(dict.get
将为您提供一个TypeError:“NoneType”对象没有属性“\uu getitem”
)。lambda
更冗长、更慢。@Eric:bah,我就是这么做的operator.getitem()
是一个好主意,工作非常出色,将在这个答案中占有一席之地!
reduce(dict.__getitem__, l, d)
from operator import getitem
reduce(getitem, l, d)
>>> d = {"a": {"b": {"c": 4}}}
>>> l = ["a", "b", "c"]
>>> from operator import getitem
>>> reduce(getitem, l, d)
4