Rozwiązany: zmień nazwę duplikatów w liście python

Zmiana nazw duplikatów na liście może być trudnym problemem do rozwiązania, ponieważ wymaga zidentyfikowania duplikatów, a następnie podjęcia decyzji, jak zmienić ich nazwy. Może to być szczególnie trudne, jeśli lista zawiera wiele elementów lub elementy są obiektami złożonymi. Ponadto zmiana nazw duplikatów może wymagać zmodyfikowania innych części kodu, które opierają się na oryginalnych nazwach elementów, aby mogły nadal działać poprawnie.

def rename_duplicates(lst): 
    seen = set() 
    new_lst = [] 

    for item in lst: 
        if item not in seen: 
            seen.add(item) 
            new_lst.append(item) 
        else: 
            new_item = item + '_1'   # append a suffix to make it unique  

            while new_item in seen:   # increment the suffix until it's unique  
                suffix = int(new_item.split('_')[-1]) + 1   # get the last number and add one to it  
                new_item = '{}_{}'.format('_'.join(new_item.split('_')[:-1]), suffix)

            seen.add(new_item)     # add the newly created item to the set of seen items  
            new_lst.append(new_item)     # append the newly created item to the list

    return new

_ostatni

# Ten kod definiuje funkcję o nazwie rename_duplicates, która przyjmuje listę jako argument.
def zmień nazwę_duplikatów(lst):

# Następnie tworzy pusty zestaw o nazwie "seen" i pustą listę o nazwie new_lst.
seen = set ()
nowy_lst = []

# Następnie iteruje elementy na liście i sprawdza, czy znajdują się one już w zestawie widocznych elementów.
dla pozycji w lst:
jeśli pozycja nie jest widziana: # Jeśli nie jest, dodaje ją do zbioru widzianych pozycji i dołącza do nowej listy.
widziany.dodaj(przedmiot)
new_lst.append(item) # Jeśli tak, tworzy unikalną wersję tego elementu, dodając sufiks (np. „_1”) do jego nazwy i sprawdza, czy nowo utworzony element znajduje się już w zestawie widocznych elementów.

else: # Jeśli tak, zwiększa sufiks, dopóki nie znajdzie nieużywanej wersji nazwy tego elementu i dodaje ten nowo utworzony element zarówno do zestawu widocznych elementów, jak i do nowej listy przed zwróceniem tej nowej listy na końcu jej wykonania.

nowa_pozycja = pozycja + '_1'

podczas gdy nowy_przedmiot widziany: # przyrost sufiksu, aż będzie unikalny

sufiks = int(new_item.split('_')[-1]) + 1 # pobierz ostatnią liczbę i dodaj do niej jedną

new_item = '{}_{}'.format('_'.join(new_item.split('_')[:-1]), przyrostek)

widziałem.dodaj (nowy

Listy w Pythonie

Listy w Pythonie są jedną z najczęściej używanych struktur danych. Służą do przechowywania kolekcji elementów, które mogą być dowolnego typu, w tym innych list. Listy są zmienne, co oznacza, że ​​można je zmieniać po utworzeniu. Obsługują również operacje, takie jak indeksowanie, wycinanie i konkatenacja.

Aby utworzyć listę w Pythonie, użyj nawiasów kwadratowych i oddziel każdy element przecinkiem:

moja_lista = [1, 2, 3]

Możesz uzyskać dostęp do poszczególnych elementów na liście za pomocą ich indeksu:
moja_lista[0] # zwraca 1
moja_lista[1] # zwraca 2
moja_lista[2] # zwraca 3

Możesz także użyć indeksów ujemnych, aby uzyskać dostęp do elementów z końca listy:

moja_lista[-1] # zwraca 3 (ostatni element)

Możesz dodawać elementy do listy za pomocą metody append() :

my_list.append(4) # dodaje 4 na końcu listy

Elementy z listy można usuwać za pomocą metody remove() lub pop():

my_list.remove(3) # usuwa 3 z listy

my_list.pop(2) # usuwa i zwraca 2 (trzeci element) z listy

Zmień nazwę duplikatów na liście w Pythonie

Zmiana nazwy duplikatów na liście w Pythonie jest częstym zadaniem podczas pracy z listami. Polega na zastąpieniu zduplikowanych elementów na liście unikalnymi wartościami. Można to zrobić za pomocą funkcji set(), która usuwa wszystkie zduplikowane elementy z listy i zwraca nową listę zawierającą tylko unikalne elementy. Funkcji set() można również użyć do zmiany nazw duplikatów, udostępniając mapowanie starych wartości na nowe wartości. Na przykład, jeśli masz listę liczb i chcesz zastąpić wszystkie duplikaty odpowiednimi kwadratami, możesz użyć następującego kodu:

# Utwórz pusty słownik
mapowanie = {}

# Iteruj po oryginalnej liście
dla pozycji w my_list:
# Sprawdź, czy pozycja już istnieje w słowniku
jeśli element nie znajduje się w mapowaniu:
# Jeśli nie, dodaj go do słownika i przypisz jego kwadrat jako wartość
mapowanie[pozycja] = pozycja * pozycja

# Utwórz pustą listę wyników
lista_wyników = []

# Powtórz ponownie oryginalną listę i zastąp każdy element jego kwadratem ze słownika dla i w my_list: lista_wyników.append(mapping[i])

# Drukuj wynik print(result_list)

Powiązane posty:

Zostaw komentarz