使键/值对成为字典的Python方法

使键/值对成为字典的Python方法,python,Python,我遇到的情况是,我从MongoDB返回的值如下: {'value': Decimal('9.99'), 'key': u'price'} {'value': u'1.1.1', 'key': u'version'} 现在,我想出了一些方法来做到这一点,比如(尽管是我的一种更草率的方法): 但我有一种令人不安的怀疑,就是有一种或几种内置方法可以清理is。类似于: d = dict((x['key'], x['value']) for x in values) 假设这些值是某种可迭代的 有关更多

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

{'value': Decimal('9.99'), 'key': u'price'}
{'value': u'1.1.1', 'key': u'version'}
现在,我想出了一些方法来做到这一点,比如(尽管是我的一种更草率的方法):

但我有一种令人不安的怀疑,就是有一种或几种内置方法可以清理is。

类似于:

d = dict((x['key'], x['value']) for x in values)
假设这些值是某种可迭代的


有关更多信息,请参阅。

在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'}
一种方法是:

或使用/按照gnibbler的建议:

>>> dict(map(getter, lst))
{'price': 9.99, 'version': '1.1.1'}

我认为
y[x['key']=x['value']
非常简洁易读。我支持aix。我认为这是一个避免过度思考问题的绝佳机会。哈,你可能是对的——这不是我第一次需要有人提醒我。谢谢你的解决方案是我会用的。不需要进一步的“改进”。或者
dict(map(getter,lst))
。您可以使用
imap
进行Python2@gnibbler:谢谢!与其他方法相比,我更喜欢这种方法,因此我在答案中对其进行了更新:)这正是我想要的!它足够优雅,我将完全处理一个额外的进口。谢谢
>>> 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'}
>>> dict(map(getter, lst))
{'price': 9.99, 'version': '1.1.1'}