将字典值转换为新字典

2024-10-03 02:47:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我从一个API中提取json数据,在我的dataframe中有许多列包含字典。编写这些词典时,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'}

如果这是可能的,我将能够从这些属性创建新的列


Tags: 数据apiidjsondataframedf字典属性
2条回答

您可以遍历这些值,并将每个值设置为字典值:

newdict = dict()
for x in original:
    newdict[x["id"]] = x["value"]

你可以做听写理解。从dict列表中,编写一个新dict,其中键是每个元素的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'}

相关问题 更多 >