我想用字符串访问字典的元素。 例如,我有一个这样的字典:
data = {"masks": {"id": "valore"}}
我有一个字符串campo="masks,id"
我想用此campo.split(',')
拆分此字符串。我获得了['masks', 'id']
,我希望能够访问元素data["masks"]["id"]
。
这本词典就是一个例子,我的词典更复杂。关键是我想要使用输入字符串data["masks"]["id"]
访问元素"masks,id"
,或者使用字符串data["masks"]
访问元素"masks"
并访问元素{{1使用输入字符串data["masks"]["id"]["X"]
等等。
我该怎么做?
答案 0 :(得分:0)
关键是你提出的要求与python内置词典的功能不匹配。
如果你想拥有嵌套地图,可以进行这种自动化"拆分"像"masks, id, X"
这样的单个键字符串......你必须自己实现它。
换句话说:答案是 - 内置词典无法为您做到这一点。
所以,"真实"要做的事情:退后一步,仔细查看你的要求,准确理解你想做什么;以及为什么要这样做。从那里开始寻找支持它的最佳设计。
从实施方面来说,我认为你需要"大概会是这样的:
key1
key1
的值是否为字典key2
... 等等。
答案 1 :(得分:0)
但是,我不建议您使用以下方法,因为python dict
并不是按照您希望的方式访问,但是因为在Python中您可以更改对象类型我自己承担风险,我想附上可以为您完成工作的片段。
所以我做的是遍历键,并且在每次迭代时获取子字典都存在,否则使用空字典,使用.get()
方法,如果找不到键,则返回空字典。
data = {"masks": {"id": "valore"}}
text = "masks, id"
nested_keys = text.split(", ")
nested_dict = data
for key in nested_keys:
nested_dict = nested_dict.get(key, {})
if (isinstance(nested_dict, str)):
print nested_dict