比较列表与对象

2024-04-24 13:22:44 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有两个列表

list1 = []
list2 = []

还有一本字典

^{2}$

让list1,list2包含多个具有不同SNo和数据的字典实例。有些SNo可能是一样的。但数据不必如此。在

我想根据SNo合并(和排序)这两个列表,保持它们的结构,同时忽略具有相同SNo的列表。在

假设:如果字典列表具有相同的SNo,则忽略list2的条目。在


Tags: 数据实例列表字典排序条目结构list2
2条回答

这是一个排序的内置函数

    sorted(list1+list2, key=lambda x: x['SNo'])

根据lambda函数返回的值对每个项进行排序。对于每个项目,列表将根据中的“id”值进行排序每个人。你也可以按相反的顺序排序

^{pr2}$

注意:这可能不会忽略“SNo”的重复值。您可以在获得已排序的合并列表后将其删除

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)

相关问题 更多 >