我需要帮助将这些词典转换为单个词典。见下文
data = [{'x': 3, 'y': 3}, {'x': 5, 'y': 3}, {'x': 1, 'y': 4}]
我想将其转换为以下内容:
{'x':[3,5,1], 'y':[3,3,4]
谢谢你!
答案 0 :(得分:1)
您可以使用词典理解:
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}
答案 1 :(得分:1)
这是一种简单的方法:
data = [{'x': 3, 'y': 3}, {'x': 5, 'y': 3}, {'x': 1, 'y': 4}]
emptyX = []
emptyY = []
for i in data:
emptyX.append(i['x'])
emptyY.append(i['y'])
final = {'x':emptyX, 'y':emptyY}
print(final)
在这里,您只需创建两个空列表。一个用于存储x
值,另一个用于存储y
值,然后在for
循环通过列表进行插入时添加每个字典的值。