我跟随这篇文章创建函数,这些函数在给定键列表的情况下获取并设置嵌套字典中的值:Access nested dictionary items via a list of keys?
# get a dict value with a list of nested keys
def getFromDict(dataDict, mapList):
return reduce(lambda d, k: d[k], mapList, dataDict)
# set a dict value with a list of nested keys
def setInDict(dataDict, mapList, value):
getFromDict(dataDict, mapList[:-1])[mapList[-1]] = value
在避免reduce的情况下,如何使用列表理解或其他方法以pythonic(2.x)的方式实现呢?在
你的结果不是一个列表,所以列表理解是不可能的。试试这个:
我认为更具Python式的方法是使用一个显式循环,就像你在最初的问题中所做的那样。请看这里的问题:Python alternative to reduce()
根据链接的答案: Guido建议不要使用
reduce()
,并解释了为什么在python3.x的链接blog post中将其移动到functools
。在相反,他建议做一些类似的事情:
因为事情更清楚了。在
你已经做的很好。您将无法做得更好,因为
reduce
基本上是用一个累加器遍历某个内容,而basic list comprehension则在没有任何累加器的情况下迭代某些内容。在但是,如果您使用这种嵌套字典的字符串,那么JSON应该是最佳选择。见http://docs.python-guide.org/en/latest/scenarios/json/
相关问题 更多 >
编程相关推荐