我有2个列表,其中包含以下数据结构:
array1:
[{'student': {'name': 'abc'}, 'address': 'add_abc'},
{'student': {'name': 'xyz'}, 'address': 'add_xyz'}]
array2:
[{'student': {'name': 'abc'}, 'address': 'add_abc'},
{'student': {'name': 'rst'}, 'address': 'add_rst'}]
Run Code Online (Sandbox Code Playgroud)
我希望有一个array3上述2个列表的联合
array3:
[{'student': {'name': 'abc'}, 'address': 'add_abc'},
{'student': {'name': 'rst'}, 'address': 'add_rst'},
{'student': {'name': 'xyz'}, 'address': 'add_xyz'}]
Run Code Online (Sandbox Code Playgroud)
我怎么能用Python做到这一点?
它们lists不是数组,但这是一个解决方案:
a1 = [{'student': {'name': 'abc'}, 'address': 'add_abc'},
{'student': {'name': 'xyz'}, 'address': 'add_xyz'}]
a2 = [{'student': {'name': 'abc'}, 'address': 'add_abc'},
{'student': {'name': 'rst'}, 'address': 'add_rst'}]
a3 = a1 + [i for i in a2 if i not in a1]
Run Code Online (Sandbox Code Playgroud)
价值a3将是
[{'student': {'name': 'abc'}, 'address': 'add_abc'},
{'student': {'name': 'xyz'}, 'address': 'add_xyz'},
{'student': {'name': 'rst'}, 'address': 'add_rst'}]
Run Code Online (Sandbox Code Playgroud)
如果您希望对结果列表进行排序(例如,按学生名称),只需使用sort方法:
a3.sort(key=lambda x: x["student"]["name"])
Run Code Online (Sandbox Code Playgroud)
结果a3将是:
[{'student': {'name': 'abc'}, 'address': 'add_abc'},
{'student': {'name': 'rst'}, 'address': 'add_rst'},
{'student': {'name': 'xyz'}, 'address': 'add_xyz'}]
Run Code Online (Sandbox Code Playgroud)
通常你会简单地使用set(a1 + a2)但问题是你的dicts里面有lists并且它们是不可用的,因此它们不能被设置.