【问题标题】:Dynamic Nested Dictionary Python [duplicate]动态嵌套字典Python [重复]
【发布时间】:2018-06-02 06:57:35
【问题描述】:

我需要根据列表访问 Python 中的字典。示例:

lst = ['A', 'B', 'C']

那么字典访问应该是:

d['A']['B']['C']

列表可以是任何深度/元素。

解决这个问题的最佳方法是什么?

【问题讨论】:

  • 如果您能提供一个真实输入和预期输出的示例,将会非常有帮助。
  • 如果其中一个键丢失,您想做什么?

标签: python list loops dictionary nested


【解决方案1】:

我会创建一个遍历列表的函数:

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
  • 你说得对,我编辑了答案!
  • 有没有办法使用列表创建嵌套字典?所以如果lst = [ 'A', 'B', 'C'] 那么创建的字典就是d['A']['B']['C'] = {}
  • @约翰。为什么不自己尝试一些东西,即使它只是谷歌搜索?您最初的问题已作为重复问题关闭,我很确定这个新问题也是如此。
【解决方案2】:

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

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

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

【讨论】:

  • 测试通过了
  • 我的错误。我没有仔细阅读。尽管这仍然是个坏建议,但已删除反对票。
  • 考虑到我们对列表和字典以及它们如何匹配一无所知,什么可能是更好的建议
  • 遍历列表以便实际进行一些检查?
猜你喜欢
  • 1970-01-01
  • 2021-06-21
  • 2019-12-04
  • 2018-09-19
  • 2020-11-12
  • 1970-01-01
  • 2018-09-15
  • 2022-01-15
  • 1970-01-01
相关资源
最近更新 更多