我有以下两个词典列表:
list_1 = [
{'id': '1', 'name': 'Johnny Johson1'},
{'id': '2', 'name': 'Johnny Johson2'},
{'id': '1', 'name': 'Johnny Johson1'},
{'id': '3', 'name': 'Johnny Johson3'},
]
list_2 = [
{'id': '1', 'datetime': '2020-01-06T12:30:00.000Z'},
{'id': '2', 'datetime': '2020-01-06T14:00:00.000Z'},
{'id': '1', 'datetime': '2020-01-06T15:30:00.000Z'},
{'id': '3', 'datetime': '2020-01-06T15:30:00.000Z'},
]
本质上,即使重复的ID代表不同的事件,我也不希望丢失数据(因为它们代表不同的事件(为此有一个单独的ID,但是不需要为演示问题而使用))。如果一个列表中有任何ID,而另一列表中没有,则完全忽略该ID。
理想情况下,我想得出以下结论(来自两个列表的合并):
list_3 = [
{'id': '1', 'name': 'Johnny Johson1', 'datetime': '2020-01-06T12:30:00.000Z'},
{'id': '2', 'name': 'Johnny Johson2', 'datetime': '2020-01-06T14:00:00.000Z'},
{'id': '1', 'name': 'Johnny Johson1', 'datetime': '2020-01-06T15:30:00.000Z'},
{'id': '3', 'name': 'Johnny Johson3', 'datetime': '2020-01-06T15:30:00.000Z'},
]
您可以使用以下列表推导,该列表推导使用double asterisk关键字argent unpacking语法,并使用zip()获得的成对元素在两个列表上求值。这具有将两个词典合并为一个的效果。
list_3 = [{**x, **y} for x, y in zip(list_1, list_2)]
输出:
>>> list3
[{'id': '1', 'name': 'Johnny Johson1', 'datetime': '2020-01-06T12:30:00.000Z'},
{'id': '2', 'name': 'Johnny Johson2', 'datetime': '2020-01-06T14:00:00.000Z'},
{'id': '1', 'name': 'Johnny Johson1', 'datetime': '2020-01-06T15:30:00.000Z'},
{'id': '3', 'name': 'Johnny Johson3', 'datetime': '2020-01-06T15:30:00.000Z'}]
请注意,此方法至少需要Python 3.5。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句