如何使用Python按名称引用json数组元素?

时间:2015-09-21 21:26:56

标签: python arrays json

在这个json数组中:

json_string=[{"Id": "report","Value": "3001"},{"Id": "user","Value": "user123"}]

如果我传入用户

,如何取回 user123

当我尝试这样做时:

content = json.loads(json_string) 
content['user']

我收到一条错误,指出你必须使用整数来引用一个元素。

我是Python的新手。

谢谢!

2 个答案:

答案 0 :(得分:3)

content是一个列表,因此您应首先按索引获取元素:

>>> content[1]['Value']
'user123'

>>> for d in content:
...     if 'user' in d.values():
...         print d['Value']
'user123'

假设user始终映射到Id

>>> for d in content:
...     if d['Id'] == 'user':
...         print d['Value']

一个班轮:

 >>> [d['Value'] for d in content if d['Id'] == 'user'][0]
 'user123'

答案 1 :(得分:0)

假设您想要关注列表中第一次出现的具有特定值的字段(例如&#39; Id&#39;)(例如&#39; user&#39;):< / p>

def look_for(string, field, val):
    return next((el['Value'] for el in string if el[field] == val))

json_string = [{"Id": "report","Value": "3001"}, {"Id": "user","Value": "user123"}]
found_val = look_for(json_string, 'Id', 'user')

产生

'user123'

显然,输出字段也可以成为参数而不是硬编码到Value