首页 > 解决方案 > 从具有匹配值的两个字典列表创建一个字典

问题描述

我有两个字典列表,dict1dict2.

dict1 = [
  {
    'id': 0,
    'name': 'James'
  }, {
    'id': 1,
    'name': 'Bob'
  }
]

dict2 = [
  {
    'id': 0,
    'name': 'James'
  }, {
    'id': 1,
    'name': 'James'
  }, {
    'id': 2,
    'name': 'Bob'
  }
]

我想创建一个这样的字典:

result = {'James': [0, 1], 'Bob': [2]}

将名称dict1作为键,并将"id"具有相同名称的字段列表作为值。

在 Python 中做到这一点的干净方法是什么?

标签: pythonlistdictionary

解决方案


IIUC,我相信最后一行应该是Bob而不是James。这样,使用pandas

import pandas as pd
>>> df1 = pd.DataFrame(dict1)
>>> df2 = pd.DataFrame(dict2)

>>> df2.groupby('name').agg(list).to_dict()['id']
{'Bob': [2], 'James': [0, 1]}

要仅过滤names位于 中的dict1

>>> df2 = df2[df2['name'].isin(df1['name'])]

然后在那group之后agg


推荐阅读