比较清单清单中的项目并选择最大的清单

时间:2018-09-06 22:28:06

标签: python

lista = [['Apertura','174830','Apertura - Home - Header_n','Variable (950x90)','AR','1','0','0.82','81','1.23',0.3,3],
         ['Apertura','174830','Apertura - Home - Header_n','Variable (950x90)','AR','1','0','0.82','81','1.23',0.25,5]
]

我需要比较列表中的所有项目。 在每个项目中,我们使用除最后两个项目以外的所有项目进行比较。 如果存在相同的项目,那么我们选择的是我们不想比较的最后一个项目中编号最少的项目

>>>['Apertura','174830','Apertura - Home - Header_n','Variable (950x90)','AR','1','0','0.82','81','1.23',0.3,3]

我使用了这种表格,但是知道我不能用它。

lista = [min(g, key=itemgetter(-2)) for _, g in groupby(lista, key=lambda s: s[:-2])]

2 个答案:

答案 0 :(得分:1)

  1 lista = [
  2     [
  3         'Apertura','174830','Apertura - Home - Header_n','Variable (950x90)',
  4         'AR','1','0','0.82','81','1.23',0.3,3
  5     ],   
  6     [
  7         'Apertura','174830','Apertura - Home - Header_n','Variable (950x90)',
  8         'AR','1','0','0.82','81','1.23',0.25,5
  9     ]
 10 ]
 11 
 12 if lista[0][:-2] == lista[1][:-2]:
 13     if lista[0][-1] < lista[1][-1]:
 14         print(lista[0])
 15     else:
 16         print(lista[1])

输出

['Apertura', '174830', 'Apertura - Home - Header_n', 'Variable (950x90)', 'AR', '1', '0', '0.82', '81', '1.23', 0.3, 3]

如果我了解您的要求是正确的,我们可以将列表与倒数第二个项目进行比较吗?如果相等,则只需对最后一个项目进行比较?

答案 1 :(得分:0)

为什么不使用带key而不是itertools.groupby的排序:

print(sorted(lista,key=lambda x: x[-2]))

OR:

lista.sort(key=lambda x: x[-2])
print(lista)