Python:从内部字典中检索结果

时间:2014-04-01 14:26:50

标签: python-3.x

我是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

2 个答案:

答案 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