我们说我有2个名单
list1 = []
list2 = []
和字典
dict = {'SNo': 1, 'Data': "Random Data"}
让list1,list2包含具有不同SNo和数据的该字典的多个实例。一些SNo可能是相同的。但数据不一定是。
我想基于SNo合并(和排序)这两个列表,保持它们的结构,同时忽略具有相同SNo的列表。
假设:如果词典列表具有相同的SNo,则忽略list2的条目。
答案 0 :(得分:1)
list1 = [{'SNo': 1, 'Data': "abc"} , {'SNo': 2, 'Data': "bcd"}, {'SNo': 2, 'Data': "def"}]
list2 = [{'SNo': 3, 'Data': "abc"} , {'SNo': 4, 'Data': "bcd"}, {'SNo': 3, 'Data': "def"}]
# to keep merged lists
final_list = []
# this list will track if sno exit alreay
sno_list = []
# take evry dict from combined list:
for d in list1+list2:
# extract sno
sno = d['SNo']
# if sno not present in sno_list add that sno.
if sno not in sno_list:
# add evry dict , if its sno not present in the sno_list.
final_list.append(d)
sno_list.append(sno)
print(final_list)
#[{'SNo': 1, 'Data': 'abc'}, {'SNo': 2, 'Data': 'bcd'}, {'SNo': 3, 'Data': 'abc'}, {'SNo': 4, 'Data': 'bcd'}]
#sorting list
result = sorted(final_list,key=lambda d:d['SNo'])
#[{'SNo': 1, 'Data': 'abc'}, {'SNo': 2, 'Data': 'bcd'}, {'SNo': 3, 'Data': 'abc'}, {'SNo': 4, 'Data': 'bcd'}]
print(result)
答案 1 :(得分:1)
这是用于执行此操作的已排序的内置函数,
sorted(list1+list2, key=lambda x: x['SNo'])
每个项目都根据lambda函数返回的值进行排序。现在,对于每个项目,列表将根据' id'的值进行排序。在each.You也可以按相反的顺序排序
sorted(list1+list2, key=lambda x: x['SNo'], reverse=True)
注意:这可能不会忽略" SNo"的重复值。您可以在获取已排序的合并列表
后将其删除