在名称中使用带有元素键的变量中的dict获取字典

时间:2017-04-05 23:14:41

标签: python json

data = {
  "items" : [{"potion" : 1}, {"potion2" : 1}]
}

print(data["items"][0]["potion"])

所以,这是jiz。我想获得potion2而不提供像[0]这样的数字,但我不能,因为一些变量在列表中有5个项目而另一个可能有3个项目所以提供一个数字可能不会给我我需要的东西。有没有办法让potion2在没有提供该数字之前获得它?

1 个答案:

答案 0 :(得分:0)

我假设您不想提供索引,因为硬编码不会在所有情况下都有效。

您可以拔出列表中包含该密钥的所有项目。

建立具有该密钥的任何项目的列表。它通常只是一个,但容器本身并不强制只有一个条目可以拥有该密钥。

之后,您可以遍历列表或检查返回的值是否为空,只需获取第一个元素。

>>> data = {'items': [{'potion': 1}, {'potion2': 1}]}
>>> e = filter(lambda i: 'potion' in i, data['items'])
>>> for i in e:
...     print(i['potion'])
... 
1

或者只拉出第一个元素。我意识到你说没有索引,但是这个索引应用于过滤后的列表,我们先检查它是不是空的,所以这是一个有效的事情。

>>> if e:
...     print(e[0]['potion'])
... 
1