Pythonic方法使键/值对成为字典

时间:2012-02-29 21:06:12

标签: python

我遇到的情况是我从MongoDB返回的值如下:

{'value': Decimal('9.99'), 'key': u'price'}
{'value': u'1.1.1', 'key': u'version'}

现在,我提出了几种方法来做到这一点,比如(虽然我的一个方法):

y[x['key']] = x['value']

但我只是怀疑这种唠叨是否有一个或一小部分内置方法可以清理。

3 个答案:

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

类似的东西:

d = dict((x['key'], x['value']) for x in values)

假设这些值是某种可迭代的。

有关详细信息,请参阅documentation

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