Skip to main content
 首页 » 编程设计

python之以编程方式访问字典中任意深度嵌套的值

2025年05月04日47Free-Thinker

<分区>

我正在编写一个 Python 脚本,其中给出了以下格式的字符串列表:['key1', 'key2', 'key2.key21.key211', 'key2.key22', '键 3']。

列表中的每个值对应于字典中的一个条目,对于像'key2.key21.key211'这样结构的条目,它们对应于(在这个例子中)一个键 'key211' 嵌套在 'key21' 中,它本身嵌套在 'key2' 中。

上面的列表对应字典:

x = { 
     'key1' : 'value1', 
     'key2' : { 
               'key21' : { 
                          'key211': 'value211' 
                         }, 
               'key22' : 'value22' 
              }, 
     'key3' : 'value3' 
    } 

名称不一定像key(n)+那样规则;例如,它们可以是 food.vegetables.potato 的形式。我唯一能保证的是字典中的 键名本身 不包含 . 字符,并且字典肯定包含原始文件中引用的所有条目列表。

我的问题是,给定这样一个字符串列表,我如何以编程方式访问字典中的相应条目?我可以想到使用 eval() 的解决方案,以及仅使用遍历/搜索的解决方案,但我想避免调用 eval(),我得到给人的印象是比较遍历会很慢(因为 dict 不是搜索树),并且会带来很多讨厌的异常处理。