Python удалить список с дублированными полями в списке списков - PullRequest
0 голосов
/ 04 марта 2020

Я хочу иметь возможность удалить элемент из списка списка, когда поле в списке дублируется в python3.

IE:

Удалить из следующего списка списков при дублировании второго поля. С

[["John","France"], ["Mike", "France"], ["Ana","Italy"]]

До

[["John","France"], ["Ana","Italy"]]

Редактировать: я пробовал следующее l oop, но я с нетерпением жду более эффективный способ, если он существует.

for element in consult_array:
    for other_elements in consult_array:
        if element[1] == other_elements[1]:
            if element != other_elements:
                consult_array.pop(element)

Ответы [ 2 ]

2 голосов
/ 04 марта 2020
data = [["John", "France"], ["Mike", "France"], ["Ana", "Italy"]]

output = []
already_seen_countries = set()

for item in data:
    country = item[1]
    if country not in already_seen_countries:
        output.append(item)
        already_seen_countries.add(country)

print(output)  # [['John', 'France'], ['Ana', 'Italy']]
0 голосов
/ 04 марта 2020

если вам нравятся однострочные решения:

l = [["John","France"], ["Mike", "France"], ["Ana","Italy"]]
list(t for t in {e[1]: e for e in l[::-1]}.values())[::-1]

вывод:

[['John', 'France'], ['Ana', 'Italy']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...