python - 将字典值转换为新字典
问题描述
我正在从 API 中提取 json 数据,并且在我的数据框中有许多包含字典的列。这些字典的编写使得 id 和 value 是字典中的两个独立条目,如下所示:
{'id': 'AnnualUsage', 'value': '13071'}
这些列的某些行仅包含一个字典条目,如上所示,但其他行最多可包含 7 个:
[{'id': 'AnnualUsage', 'value': '13071'},
{'id': 'TestId', 'value': 'Z13753'},
{'id': 'NumberOfMe', 'value': '3'},
{'id': 'Prem', 'value': '960002'},
{'id': 'ProjectID', 'value': '0039'},
{'id': 'Region', 'value': 'CHR'},
{'id': 'Tariff', 'value': 'Multiple'},
{'id': 'Number', 'value': '06860702'}]
当我尝试将此字典分解为单独的列属性时
CTG_df2 = pd.concat([CTG_df['id'], CTG_df['applicationUDFs'].apply(pd.Series)], axis=1)
我最终得到一个数据框中的列,每个列都包含上述条目的字典,即
{'id': 'AnnualUsageDE', 'value': '13071'}
有没有办法将我的字典值转换为新的键值对?例如,我想从以下转换:
{'id': 'AnnualUsageDE', 'value': '13071'}
至
{'AnnualUsageDE': '13071'}
如果可能的话,我将能够从这些属性创建新列。
解决方案
你可以做一个听写理解。从您的字典列表中,组成一个新字典,其中键是id
每个元素的,值是value
每个元素的。
original = [{'id': 'AnnualUsage', 'value': '13071'},
{'id': 'TestId', 'value': 'Z13753'},
{'id': 'NumberOfMe', 'value': '3'},
{'id': 'Prem', 'value': '960002'},
{'id': 'ProjectID', 'value': '0039'},
{'id': 'Region', 'value': 'CHR'},
{'id': 'Tariff', 'value': 'Multiple'},
{'id': 'Number', 'value': '06860702'}]
newdict = {subdict['id']: subdict['value'] for subdict in original}
print(newdict)
# {'AnnualUsage': '13071',
# 'Number': '06860702',
# 'NumberOfMe': '3',
# 'Prem': '960002',
# 'ProjectID': '0039',
# 'Region': 'CHR',
# 'Tariff': 'Multiple',
# 'TestId': 'Z13753'}
推荐阅读
- javascript - 如何通过嵌套的 ng-containers 和 ng-templates 传递数据?
- c# - BackgroundWorker ReportProgress 竞争条件
- azure-sql-database - 限制 AzureSQL 中的特定客户端(后台作业)?
- reactjs - 如何使用或任何其他方式在反应 js 中使表格的整行可点击?
- c++ - 指针的函数模板特化
- c# - 坦克桶旋转
- javascript - 使用 JS 确定 DOM 元素媒体样式
- google-colaboratory - 在 colab 中使用“安装驱动器”网络按钮的错误(已解决)。从 google colab 访问“与我共享”文件(2020 年,以前的解决方案似乎失败了)
- javascript - Firebase 基本规则
- reactjs - 如何从组件中禁用字段数组中的字段?