Skip to main content
 首页 » 编程设计

python之如何在 Python 中获取 2 个字典列表的并集

2025年05月04日29lvdongjie

我有 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'}] 

我想要一个 array3 上面两个列表的并集

 array3: 
 [{'student': {'name': 'abc'}, 'address': 'add_abc'},  
  {'student': {'name': 'rst'},  'address': 'add_rst'}, 
  {'student': {'name': 'xyz'},  'address': 'add_xyz'}] 

我如何在 Python 中做到这一点?

请您参考如下方法:

它们是列表,不是数组,但这里有一个解决方案:

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] 

a3 的值将是

[{'student': {'name': 'abc'}, 'address': 'add_abc'},  
 {'student': {'name': 'xyz'}, 'address': 'add_xyz'},  
 {'student': {'name': 'rst'}, 'address': 'add_rst'}] 

如果您希望对结果列表进行排序(例如,按学生姓名),只需使用 sort 方法:

a3.sort(key=lambda x: x["student"]["name"]) 

结果 a3 将是:

[{'student': {'name': 'abc'}, 'address': 'add_abc'},  
 {'student': {'name': 'rst'}, 'address': 'add_rst'}, 
 {'student': {'name': 'xyz'}, 'address': 'add_xyz'}]  

通常你会简单地使用 set(a1 + a2) 但这里的问题是你的 list 中有 dict 并且它们是不可散列的,因此它们不能是设置项。