【发布时间】:2021-08-06 09:23:51
【问题描述】:
我想在python中将这两个字典列表合并为一个-
输入
arr1 = [
{ "field": 'nickname', "direction": 'ASC' },
{ "field": 'email', "direction": 'ASC' },
{ "field": 'name', "direction": 'ASC' },
{ "field": 'first_name', "direction": 'ASC' }
]
arr2 = [
{ "field" : "nickname", "direction" : "DESC"},
{ "field" : "email", "direction" : "DESC"},
{ "field" : "last_name", "direction" : "DESC"}
]
并且需要输出 -
输出
[
{ field: "nickname", direction: "DESC"},
{ field: "email", direction: "DESC"},
{ field: "last_name", direction: "DESC"},
{ field: "name", direction: "ASC" },
{ field: "first_name", direction: "ASC" }
]
我的解决方案 -
arr1 = [
{ "field": 'nickname', "direction": 'ASC' },
{ "field": 'email', "direction": 'ASC' },
{ "field": 'name', "direction": 'ASC' },
{ "field": 'first_name', "direction": 'ASC' }
]
arr2 = [
{ "field" : "nickname", "direction" : "DESC"},
{ "field" : "email", "direction" : "DESC"},
{ "field" : "last_name", "direction" : "DESC"}
]
arr4 = arr2;
arr3 = []
for i in range(0, len(arr1)):
for j in range(0, len(arr2)):
flag = 0
if(arr1[i]['field'] == arr2[j]['field']):
arr3.append(arr2[j])
arr4.remove(arr2[j])
flag = 1
break
if flag == 0 :
arr3.append(arr1[i])
arr3 += arr4
print(arr3)
我尝试了几种方法,但需要在 O(n) 复杂度中完成,并且不修改 arr2。有什么办法吗?
【问题讨论】:
标签: python list dictionary data-structures