在python中将3个字典合并为一个

ays*_*ysh 1 python dictionary

将 3 个字典合并为一个。每个 id 都有一个元素 ( id) 作为公共元素

d1 在下面

 [{
    "id": 1,
    "title": "delectus aut autem"
  },
  {
    "id": 2,
    "title": "quis ut nam facilis et officia qui"
  }]
Run Code Online (Sandbox Code Playgroud)

d2

 [{
    "id": 1,
    "Level":"Gold"
  },
  {
    "id": 2,
    "Level":"Silver"
  }]
Run Code Online (Sandbox Code Playgroud)

d3

 [{
    "id": 1,
    "completed": false
  },
  {
    "id": 2,
    "completed": true
  }]
Run Code Online (Sandbox Code Playgroud)

预计出

[
  {
    "id": 1,
    "title": "delectus aut autem",
    "Level":"Gold",
    "completed": false
  },
  {
    "id": 2,
    "title": "quis ut nam facilis et officia qui",
    "Level":"Silver"
    "completed": true
]
Run Code Online (Sandbox Code Playgroud)

Roy*_*012 5

这是使用列表理解来做到这一点的一种方法:

[{**a, **b, **c} for a, b, c in zip(d1, d2, d3)]
Run Code Online (Sandbox Code Playgroud)

输出是:

[{'id': 1, 'title': 'delectus aut autem', 'Level': 'Gold', 'completed': False},
 {'id': 2,
  'title': 'quis ut nam facilis et officia qui',
  'Level': 'Silver',
  'completed': True}]
Run Code Online (Sandbox Code Playgroud)

请注意,这假设所有三个列表:

  • 按 ID 排序。如果不是这种情况,请先使用 (例如): 对它们进行排序l3 = sorted(l3, key=lambda x:x["id"])
  • 包含所有 ID 的项目。