我是python的新手,我不知道如何从内部字典中检索值:
这是我在变量中的值:
variable = {'hosts': 1, 'key':'abc', 'result': {'data':[{'licenses': 2, 'id':'john'},{'licenses': 1, 'id':'mike'}]}, 'version': 2}
我想要做的是为新变量分配'mike'所拥有的许可证数量。例如。
很抱歉这样的新手,显而易见的简单问题,但我只使用python几天,需要这个功能asap。我搜索了oracle(谷歌)和stackoverflow,但一直无法找到答案......
PS:使用python3
答案 0 :(得分:1)
您可以使用嵌套引用,如下所示:
variable['result']['data'][1]['licenses'] += 1
variable['result'] returns:
{'data':[{'licenses': 2, 'id':'john'},{'licenses': 1, 'id':'mike'}]}
variable['result']['data'] returns:
[{'licenses': 2, 'id':'john'},{'licenses': 1, 'id':'mike'}]
variable['result']['data'][1] returns:
{'licenses': 1, 'id':'mike'}
variable['result']['data'][1]['licenses'] returns:
1
which we then increment using +=1
答案 1 :(得分:1)
完成它并从
开始>>> from pprint import pprint
>>> pprint(variable)
{'hosts': 1,
'key': 'abc',
'result': {'data': [{'id': 'john', 'licenses': 2},
{'id': 'mike', 'licenses': 1}]},
'version': 2}
首先,让我们进入result
词典:
>>> result = variable['result']
>>> pprint(result)
{'data': [{'id': 'john', 'licenses': 2}, {'id': 'mike', 'licenses': 1}]}
然后转到data
键:
>>> data = result['data']
>>> pprint(data)
[{'id': 'john', 'licenses': 2}, {'id': 'mike', 'licenses': 1}]
现在,我们必须扫描“迈克”字典:
>>> for item in data:
... if item['id'] == 'mike':
... print item['licenses']
... break
...
1
您可以将其缩短为:
>>> for item in variable['result']['data']:
... if item['id'] == 'mike':
... print item['licenses']
... break
...
1
但更好的方法是重新排列数据结构,如:
variable = {
'hosts': 1,
'version': 2,
'licenses': {
'john': 2,
'mike': 1,
}
}
然后你可以这样做:
>>> variable['licenses']['mike']
1