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

时间:2017-02-13 09:16:37

标签: python dictionary

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

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"]等等。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

关键是你提出的要求与python内置词典的功能不匹配。

如果你想拥有嵌套地图,可以进行这种自动化"拆分"像"masks, id, X"这样的单个键字符串......你必须自己实现它。

换句话说:答案是 - 内置词典无法为您做到这一点。

所以,"真实"要做的事情:退后一步,仔细查看你的要求,准确理解你想做什么;以及为什么要这样做。从那里开始寻找支持它的最佳设计。

从实施方面来说,我认为你需要"大概会是这样的:

  • 检查提供的"键"匹配" key1,key2,key3"
  • 如果是这样,将该密钥分割为
  • 的子密钥
  • 然后检查" out字典"具有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