我正在编写一个Python脚本,其中我会得到一些字符串列表,格式如下:
列表中的每个值对应字典中的一个条目,对于像
上面的列表对应以下字典:
名字可能并不像
['key1', 'key2', 'key2.key21.key211', 'key2.key22', 'key3']
。列表中的每个值对应字典中的一个条目,对于像
'key2.key21.key211'
这样结构化的条目,它们对应于(在此示例中)嵌套在'key21'
内部的'key211'
键,该键本身又嵌套在'key2'
内部。上面的列表对应以下字典:
x = {
'key1' : 'value1',
'key2' : {
'key21' : {
'key211': 'value211'
},
'key22' : 'value22'
},
'key3' : 'value3'
}
名字可能并不像
key(n)+
那样规律,比如可以是 food.vegetables.potato
的形式。唯一确定的是,在字典中,键名本身 不包含 .
字符,并且该字典中确实包含原始列表中引用的所有条目。
我的问题是,给定这样一个字符串列表,如何以编程方式访问字典中相应的条目?我能想到使用 eval()
的解决方案,还有一种只使用遍历/搜索的方法,但我想避免调用 eval()
,而且我认为遍历和比较会很慢(因为 dict
不是搜索树),并且需要处理很多令人讨厌的异常情况。
original_dict[k[0]][k[1]][k[2]]...
? - Two-Bit AlchemistO(1)
操作。 - jonrsharpedict
方法,但编写一个迭代/递归函数应用它很容易。 - jonrsharpe