Python动态嵌套字典

3
我需要根据列表在Python中访问字典。例如:
lst = ['A', 'B', 'C']

那么访问字典应该是这样的:
d['A']['B']['C']
  • 列表可以包含任意深度/元素。
  • 如何最好地解决这个问题?

如果您能提供一个真实输入和期望输出的示例案例,那将非常有帮助。 - Vasilis G.
如果其中一个键丢失了,您想要做什么? - Mad Physicist
2个回答

2
我会创建一个函数来遍历列表: ```python def iterate_list(lst): for item in lst: # do something with each item ``` 这个函数可以用来对列表中的每一项进行操作。
d = {}
d['A'] = {}
d['A']['B'] = {}
d['A']['B']['C'] = 'value'
lst = ['A', 'B', 'C']

def get_value(d, lst):
    for elem in lst:
        d = d[elem]
    return d

print get_value(d, lst)  # outputs 'value'

你为什么要引入一个新变量,而不是重新绑定 d - Mad Physicist
你说得对,我编辑了答案! - francisco sollima
有没有一种方法可以使用列表创建嵌套字典?因此,如果 lst = ['A', 'B', 'C'],则创建的字典将是 d['A']['B']['C'] = {} - John
@John。为什么不自己尝试一下,即使只是通过谷歌搜索?你最初的问题被关闭了,我相信这个新问题也会被关闭。 - Mad Physicist

2

可以使用eval函数应用于从列表生成的字符串:

eval('d[\''+'\'][\''.join(lst)+'\']')

这里'\'][\'是一个分隔符。


它已经通过了测试。 - freude
我的错误。我没有仔细阅读。尽管这仍然是错误的建议,但我已经取消了踩的操作。 - Mad Physicist
考虑到我们对列表和字典以及它们之间的匹配一无所知,可能会有更好的建议。 - freude
遍历列表以便进行一些检查? - Mad Physicist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接