我遇到的情况是我从MongoDB返回的值如下:
{'value': Decimal('9.99'), 'key': u'price'}
{'value': u'1.1.1', 'key': u'version'}
现在,我提出了几种方法来做到这一点,比如(虽然我的一个方法):
y[x['key']] = x['value']
但我只是怀疑这种唠叨是否有一个或一小部分内置方法可以清理。
答案 0 :(得分:6)
在Python 2.7+中,您可以使用词典理解:
In [2]: l = [{'value': Decimal('9.99'), 'key': u'price'}, {'value': u'1.1.1', 'key': u'version'}]
In [5]: {x['key']: x['value'] for x in l}
Out[5]: {u'price': Decimal('9.99'), u'version': u'1.1.1'}
答案 1 :(得分:5)
答案 2 :(得分:3)
一种方式可以是operator.itemgetter
:
>>> from operator import itemgetter
>>> lst = [{'value': 9.99, 'key': 'price'}, {'value': '1.1.1', 'key': 'version'}]
>>>
>>> getter = itemgetter('key','value')
>>> dict(getter(dct) for dct in lst)
{'price': 9.99, 'version': '1.1.1'}
或使用map()
/ imap()
作为 gnibbler 建议:
>>> dict(map(getter, lst))
{'price': 9.99, 'version': '1.1.1'}