我如何用嵌套的dictonaries压平字典列表,假设我有以下dict:
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)
单线法,可能有点棘手。你知道吗
我更喜欢使用pandas库中的
json_normalize()
方法,因为这将是一个优雅的解决方案,并且不会影响代码的可读性。你知道吗示例如下:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.io.json.json_normalize.html
这是一种使用
dict.update
和.pop
的方法例如:
输出:
相关问题 更多 >
编程相关推荐