python - 从具有匹配值的两个字典列表创建一个字典
问题描述
我有两个字典列表,dict1
和dict2
.
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 中做到这一点的干净方法是什么?
解决方案
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
推荐阅读
- reactjs - 我在使用 redux 获取本机反应数据时遇到错误
- android - 如何在 Android 上同时连接到 MOBILE 时检查 Wi-Fi 连接 (SSID)
- wpf - 根据 wpf 中的值启用/禁用列表视图内的按钮
- python - 为 django 2.1+ 适配 MultiHostMiddleware
- php - PHP 版本 7.2.13 中的文件未移动到文件夹
- c# - 无法将字符串转换为 system.Net.HttpContent
- php - 如何在 PHP 中将特殊时区的当前日期和时间转换为十进制(16,4)
- ms-access - 如何通过(无限)添加按钮在主窗体中制作系列子窗体?
- ruby-on-rails - Ruby OAuth2.0:客户端凭据类型具有不受支持的客户端身份验证方法
- hadoop - Impala : 运行总和 1 小时