如何访问用字符串索引的dictionary元素



我想用字符串访问字典的一个元素。例如,我有一本这样的字典:

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的值

等等。

最新更新