首页 > 解决方案 > 整合python字典

问题描述

我需要帮助将这些字典转换为单个字典。见下文

data = [{'x': 3, 'y': 3}, {'x': 5, 'y': 3}, {'x': 1, 'y': 4}]

我想将其转换为以下内容:

{'x':[3,5,1], 'y':[3,3,4]

谢谢你!

标签: python

解决方案


您可以使用字典理解:

data = [{'x': 3, 'y': 3}, {'x': 5, 'y': 3}, {'x': 1, 'y': 4}]
new_data = {i:[c.get(i) for c in data] for i in ['x', 'y']}

输出:

{'y': [3, 3, 4], 'x': [3, 5, 1]}

但是,为了更通用,您可以使用reduce

from functools import reduce
new_result = {
    i : [c.get(i) for c in data] 
    for i in set(reduce(
      lambda x, y:list(getattr(x, 'keys', lambda :x)()) + list(y.keys()), data)
   )
} 

编辑:较短的通用解决方案:

new_s = {i for b in map(dict.keys, data) for i in b}
new_data = {i:[c.get(i) for c in data] for i in new_s}

推荐阅读