Python字典键在迭代期间更改

2024-04-23 19:35:28 发布

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

我有这样一句话:

     d={
         'McAfee': {'DatDate': '123','DatVersion': '456'},
         'AntiVirus': {'AVName': ['Mac Defender', 'Windows Defender'],'AVVersion': ['262144', '393472']}
       }

现在我想根据这个映射更改d的键和d的值的键:

mapping_table = {"McAfee":'Mc_table','AntiVirus':'An_table'}

mapping_coulmn = {'DatDate':"Dc_column",'AVName':'Av_column','DatVersion':'Da_column','AVVersion':'AVV_column'}

输出应该是:

 d={
    'Mc_table': {'Dc_column': '123','Da_column': '456'},
    'An_table': {'Av_column': ['Mac Defender', 'Windows Defender'],'AVV_column': ['262144', '393472']}
    }

我最累的是:

for key in d:
    if key in mapping_table:
        new_key = mapping_table[key]
        d1[new_key]=d.pop(key)
        
print(d)

它返回一个错误:

RuntimeError: dictionary keys changed during iteration

有朋友能帮忙吗?非常感谢


Tags: keyanwindowsmactablecolumnmcmapping
1条回答
网友
1楼 · 发布于 2024-04-23 19:35:28
d = {
    mapping_table.get(k, k): {
        mapping_column.get(kk, kk): vv for kk, vv in v.items()
    }
    for k, v in d.items()
}
print(d)

印刷品:

{'Mc_table': {'Dc_column': '123', 'Da_column': '456'}, 
 'An_table': {'Av_column': ['Mac Defender', 'Windows Defender'], 
              'AVV_column': ['262144', '393472']}}

相关问题 更多 >