Используйте set
здесь, чтобы получить только уникальные предметы:
>>> lis = [['welcome','a1'],['welcome','a1'],['hello','a2'],['hello','a3']]
>>> [list(x) + [1] for x in set(map(tuple, lis))]
>>> [['welcome', 'a1', 1], ['hello', 'a3', 1], ['hello', 'a2', 1]]
Объяснение:
Set всегда возвращает уникальные элементы из итератора или итератора, но наборы могут содержать только неизменный элемент так, Вы сначала должны преобразовать их в кортеж. Подробный вариант кода выше, только разница в том, что будет также сохранить оригинал или
>>> lis = [['welcome','a1'],['welcome','a1'],['hello','a2'],['hello','a3']]
>>> s = set()
>>> for item in lis:
... tup = tuple(item) #covert to tuple
... s.add(tup)
>>> s
set([('welcome', 'a1'), ('hello', 'a3'), ('hello', 'a2')])
Теперь используйте список понимание, чтобы получить ожидаемый результат:
>>> [list(item) + [1] for item in s]
[['welcome', 'a1', 1], ['hello', 'a3', 1], ['hello', 'a2', 1]]
Если порядок элементов материи (sets
не сохраняют порядок), а затем использовать это:
>>> seen = set()
>>> ans = []
>>> for item in lis:
... tup = tuple(item)
... if tup not in seen:
... ans.append(item + [1])
... seen.add(tup)
...
>>> ans
[['welcome', 'a1', 1], ['hello', 'a2', 1], ['hello', 'a3', 1]]
Я не уверен, что смысл использования 1
здесь.
Это звучит как проблема со словарем, но вопрос неадекватен ... – jdero
Как «привет» стал «привет»? –
Не следует выводить результат: '[['welcome', 'a1', 2], ['hello', 'a3', 1], ['hello', 'a2', 1]]'? – arshajii