输入:
my_list = [
{'Name':'Jack', 'Surname': 'Reacher', 'Blogs':{'BlogName': 'python2', 'Date':'20200101' }},
{'Name':'Jack2', 'Surname': 'Reacher2', 'Blogs':{'BlogName':'Python3','Date':'20200201'}}
]
预期输出:
arr_1 = [ {'Name':'Jack', 'Surname':'Reacher'}, {'Name':'Jack2', 'Surname':'Reacher2'} ]
arr_2 = [ {'ParentId':'Jack', 'BlogName':'python2','Date1':'20200101'},
{'ParentId':'Jack2','BlogName':'Python3','Date1':'20200201'} ]
我得到的输出:
arr_1 = [ {'Name': 'Jack'}, {'Surname': 'Reacher'}, {'Name': 'Jack2'}, {'Surname': 'Reacher2'} ]
arr_2 = [{'ParentId': 'Jack'}, {'BlogName': 'python2', 'Date': '20200101'},
{'ParentId': 'Jack2'}, {'BlogName': 'Python3', 'Date': '20200201'}]
我应该如何将'arr_2'的字典拼合?
for lis in my_list:
for k, v in lis.items():
if not k == 'Blogs':
arr_1.append({k:v})
for lis in my_list:
for k, v in lis.items():
if k == 'Surname':
continue
elif k == 'Name':
arr_2.append({'ParentId':v})
else:
arr_2.append(v)
print(arr_1)
print(arr_2)
此外,有没有一种Python方式可以做到这一点?我觉得我已经结束了。
答案 0 :(得分:5)
请注意在arr2
之前如何处理arr1
。使用'Blogs'
处理dict
时,我们会移除arr2
内部pop
。此外,**
运算符还可以使字典变平。
arr2 = [{'ParentId':d.get('Name'),**d.pop('Blogs')} for d in my_list]
arr1 = my_list[:]
#Output
[{'Name': 'Jack', 'Surname': 'Reacher'}, {'Name': 'Jack2', 'Surname': 'Reacher2'}]
[{'ParentId': 'Jack', 'BlogName': 'python2', 'Date': '20200101'}, {'ParentId': 'Jack2', 'BlogName': 'Python3', 'Date': '20200201'}]