当前位置: 代码迷 >> python >> 如何访问用字符串索引的字典元素?
  详细解决方案

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

热度:43   发布时间:2023-06-13 16:42:30.0

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

data = {"masks": {"id": "valore"}}

我有一个字符串campo="masks,id"我想用此campo.split(',')拆分此字符串。 我获得['masks', 'id'] ,并由此访问元素data["masks"]["id"]

这本词典就是一个例子,我的词典比较复杂。 的一点是,我想要访问的元素data["masks"]["id"]与输入字符串"masks,id" ,或者向元件data["masks"]以字符串"masks" ,并元素data["masks"]["id"]["X"]与输入字符串"masks,id,X"等。

我怎样才能做到这一点?

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

如果您想使用嵌套映射来对单个键字符串(例如"masks, id, X"进行这种自动“拆分”,那么您将必须自己实现。

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

因此,这里要做的“实际”事情:退后一步,仔细研究您的需求以确切地了解您想做什么; 以及为什么要这么做。 然后从那里寻找最好的设计来支持它。

从实现方面来看,我认为您的“需求”大致如下:

  • 检查提供的“键”是否匹配“键1,键2,键3”
  • 如果是这样,请将该键拆分为子键
  • 然后检查“出字典”是否具有key1的值
  • 然后检查key1的值是否为字典
  • 然后检查“内部”字典是否具有key2的值...

等等。

但是,我不建议您使用以下方法,因为python dict并不意味着按您希望的方式进行访问,但是由于在Python中您可以自行承担更改对象类型的风险,因此我想附上摘要,即可为您完成工作。

因此,我要做的是遍历键,并在每次迭代时获取存在的子词典,否则放入空词典.get()使用的.get()方法.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
  相关解决方案