Будет ли что-то вроде словаря работать лучше здесь?
all = [[123, 1],[456, 1],[789, 1],[123,2],[456, 2],[789,1]]
as_dict = {}
for item in all:
if not (item[0] in as_dict and as_dict[item[0]] > item[1]):
as_dict[item[0]] = item[1]
print(as_dict)
# Returns {123: 2, 456: 2, 789: 1}
На самом деле, если вы знаете, что вторые числа в каждой паре никогда не уменьшатся (например, вы не увидите что-то вроде [123,0]
появиться позже в списке после [123,2]
), тогда просто преобразование списка в словарь с dict()
должно выполнить то же самое.Затем вы можете преобразовать его обратно в список, если хотите.
d = dict(all) # This is {123: 2, 456: 2, 789: 1}
newlist = [ [k,d[k]] for k in d] # This is [[123, 2], [456, 2], [789, 1]]