我想将此[{u'Key': 'color', u'Value': 'red'}, {u'Key': 'size', u'Value': 'large'}]
转换为:{'color': 'red', 'size': 'large'}
。
有人有什么建议吗?我一直在玩列表推导,lambda函数和zip()
超过一个小时,感觉我错过了一个明显的解决方案。谢谢!
答案 0 :(得分:9)
您可以使用dictionary comprehension并尝试以下内容:
>>> a = [{u'Key': 'color', u'Value': 'red'}, {u'Key': 'size', u'Value': 'large'}]
>>> b = {i['Key']:i['Value'] for i in a}
>>> b
{'color': 'red', 'size': 'large'}
b = dict((i['Key'], i['Value']) for i in a)
答案 1 :(得分:5)
使用dict理解。
>>> l = [{u'Key': 'color', u'Value': 'red'}, {u'Key': 'size', u'Value': 'large'}]
>>> {i['Key']:i['Value'] for i in l}
{'color': 'red', 'size': 'large'}
答案 2 :(得分:1)
使用Lambda函数。
a={}
dic = [{u'Key': 'color', u'Value': 'red'}, {u'Key': 'size', u'Value': 'large'}]
reduce(lambda x,y:a.__setitem__(y["Key"],y["Value"]),dic,a)
OP
print a
{'color': 'red', 'size': 'large'}
正如所建议:
import operator
reduce(lambda x,y:operator.setitem(a,y["Key"],y["Value"]),dic,a)