繁体   English   中英

如何将(动态)列表数量合并到元组列表中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM