[英]How to merge (dynamic) numbers of lists into a list of tuples
什么是实现以下结果的快速和 pythonic (2.7) 方式:字典 a, b 是动态的,可以更多
original = [
[{'a1': 'a1_1', 'a2': 'a2_1'}],
[{'b1': 'b1_1', 'b2': 'b2_1'}]
]
# this should be the result
result = [
({'a1': 'a1_1'}, {'b1': 'b1_1'}),
({'a2': 'a2_1'}, {'a1': 'a1_1'}),
]
我已经用enumerate(zip())
试过了,但我不明白..
假设您的数据采用以下格式:
original = [
[{'a1': 'a1_1', 'a2': 'a2_1'}],
[{'b1': 'b1_1', 'b2': 'b2_1'}]
]
您可以将数据重新组织为如下所示:
x = [[list(elem.items()) for elem in item] for item in original]
# x
# [[[('a1', 'a1_1'), ('a2', 'a2_1')]], [[('b1', 'b1_1'), ('b2', 'b2_1')]]]
所以你可以像这样在中间状态下重新组合它:
y = list(zip(x[0][0], x[1][0]))
# y
# [(('a1', 'a1_1'), ('b1', 'b1_1')), (('a2', 'a2_1'), ('b2', 'b2_1'))]
最后得到你的结果:
result = [dict(item) for item in y]
# result:
# [{'a1': 'a1_1', 'b1': 'b1_1'}, {'a2': 'a2_1', 'b2': 'b2_1'}]
如果您有更多项目,则模式应该相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.