Python:什么是扁平化字典列表的最佳方法

标签 python dictionary

我怎样才能用嵌套字典压平一个字典列表,假设我有以下字典:

data = [
            { 'Name':'xyx',
            'Age':22,
            'EmpDetails':{'Salary':100,'Job':'Intern','Location':'TER'}
            },
            { 'Name':'abc',
                'Age':23,
                'EmpDetails':{'JoinDate':'20110912','Salary':200,'Job':'Intern2','Location':'TER2'}
            },
            {'Name':'efg',
                'Age':24,
                'EmpDetails':{'JoinDate':'20110912','enddate':'20120912','Salary':300,'Job':'Intern3','Location':'TER3'}
            }
       ]

我需要删除 EmpDetails 节点并将其值向上移动一级,如下所示

data = [
            { 'Name':'xyx','Age':22,'Salary':100,'Job':'Intern','Location':'TER'},
            { 'Name':'abc','Age':23,'JoinDate':'20110912','Salary':200,'Job':'Intern2','Location':'TER2'},
            {'Name':'efg','Age':24,'JoinDate':'20110912','enddate':'20120912','Salary':300,'Job':'Intern3','Location':'TER3'}
       ]

我现在在下面使用这个,有没有更快的方法?

newlist = []
for d in data:
    empdict ={}
    for key, val in d.items():
        if(key!='EmpDetails'):
            empdict[key] = val
        if(key=='EmpDetails'):
            for key2, val2 in val.items():
                empdict[key2] = val2
    newlist.append(empdict)

最佳答案

这是一种使用 dict.update.pop 的方法

例如:

data = [
            { 'Name':'xyx',
            'Age':22,
            'EmpDetails':{'Salary':100,'Job':'Intern','Location':'TER'}
            },
            { 'Name':'abc',
                'Age':23,
                'EmpDetails':{'JoinDate':'20110912','Salary':200,'Job':'Intern2','Location':'TER2'}
            },
            {'Name':'efg',
                'Age':24,
                'EmpDetails':{'JoinDate':'20110912','enddate':'20120912','Salary':300,'Job':'Intern3','Location':'TER3'}
            }
       ]

for i in data:
    i.update(i.pop("EmpDetails"))
print(data)

输出:

[{'Age': 22, 'Job': 'Intern', 'Location': 'TER', 'Name': 'xyx', 'Salary': 100},
 {'Age': 23,
  'Job': 'Intern2',
  'JoinDate': '20110912',
  'Location': 'TER2',
  'Name': 'abc',
  'Salary': 200},
 {'Age': 24,
  'Job': 'Intern3',
  'JoinDate': '20110912',
  'Location': 'TER3',
  'Name': 'efg',
  'Salary': 300,
  'enddate': '20120912'}]

关于Python:什么是扁平化字典列表的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57704777/

相关文章:

php - 从 PHP 到 Python 住宿

Python:读取和写入数百万个小文件的速度很慢

Python获取可执行文件的路径?

python - 索引与在另一个列表中使用一个列表索引不同步

python - 检查嵌套字典的值中是否只存在一个实体

python - 在 Python 中创建具有初始容量的列表

python - 在python中缓存数据库数据

Python 字典 : Prevent previous value not overwritten by the new value

python - 将字典传递给 Python 中的线程函数

python - 从 Python 字典中插入值,包括 MySQL 的键