我想用字符串访问字典的一个元素。例如,我有一本这样的字典:
data = {"masks": {"id": "valore"}}
我有一个字符串campo="masks,id"
,我想用这个campo.split(',')
分割这个字符串。我获得CCD_ 3,并且利用该CCD_。
这本字典就是一个例子,我的字典更复杂。重点是,我想用输入字符串"masks,id"
访问元素data["masks"]["id"]
,或者用字符串"masks"
访问元素data["masks"]
,用输入字符串"masks,id,X"
访问元素data["masks"]["id"]["X"]
,依此类推
我该怎么做?
然而,我不建议您使用以下方法,因为pythondict
并不是按照您希望的方式访问的,但由于在python中,您可以更改对象类型,风险自负,我想附加一个片段,为您完成工作。
因此,我所做的是对键进行迭代,每次迭代时都会获取子字典,否则使用的.get()
方法put empty diction会在找不到键的情况下返回空dict。
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
重点是您提出的需求与字典中内置的python的功能不匹配。
如果你想让嵌套映射对像"masks, id, X"
这样的单个键串进行这种自动"拆分",那么。。。你必须自己实施。
换句话说:答案是——内置的字典不能为你做到这一点。
所以,这里要做的"真正"的事情是:退后一步,仔细研究你的需求,以准确地了解你想做什么;以及你为什么要这么做。并从那里寻找支持这一点的最佳设计。
从实现的角度来看,我认为您"需要"的大致内容是:
- 检查提供的"key"是否与"key1,key2,key3"匹配
- 如果是,将该键拆分为其子键
- 然后检查"out dictionary"是否有
key1
的值 - 然后检查
key1
的值是否为字典 - 然后检查"内部"字典是否有
key2
的值
等等。