Löst: byt namn på dubbletter i list python

Att byta namn på dubbletter i en lista kan vara ett svårt problem att lösa eftersom det kräver att du identifierar dubbletterna och sedan bestämmer hur du byter namn på dem. Detta kan vara särskilt utmanande om listan innehåller många element eller om elementen är komplexa objekt. Dessutom kan byta namn på dubbletter kräva att du ändrar andra delar av din kod som förlitar sig på de ursprungliga namnen på elementen för att de ska fortsätta att fungera korrekt.

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

_lst

# Den här koden definierar en funktion som heter rename_duplicates som tar in en lista som ett argument.
def rename_duplicates(lst):

# Den skapar sedan en tom uppsättning som heter seen och en tom lista som heter new_lst.
sett = set ()
new_lst = []

# Den itererar sedan genom objekten i listan och kontrollerar om de redan finns i uppsättningen av sedda objekt.
för artikel i lst:
om objektet inte syns: # Om det inte är det lägger det till det i uppsättningen av sett objekt och lägger till det i den nya listan.
seen.add(item)
new_lst.append(item) # Om det är det, skapar den en unik version av det objektet genom att lägga till ett suffix (t.ex. '_1') till dess namn och kontrollerar om detta nyskapade objekt redan finns i uppsättningen av sett objekt.

annat: # Om så är fallet, ökar den suffixet tills den hittar en oanvänd version av det objektnamnet och lägger till detta nyskapade objekt till både uppsättningen av sett objekt och till den nya listan innan den returnerar den nya listan i slutet av dess körning.

new_item = artikel + '_1'

medan new_item i sett: # öka suffixet tills unikt

suffix = int(new_item.split('_')[-1]) + 1 # få sista numret och lägg till ett till det

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

seen.add(ny

Listor i Python

Listor i Python är en av de mest använda datastrukturerna. De används för att lagra en samling föremål, som kan vara av vilken typ som helst, inklusive andra listor. Listor är föränderliga, vilket innebär att de kan ändras efter att de har skapats. De stöder även operationer som indexering, skivning och sammanlänkning.

För att skapa en lista i Python använder du hakparenteser och separerar varje objekt med ett kommatecken:

min_lista = [1, 2, 3]

Du kan komma åt enskilda element i listan med deras index:
min_lista[0] # returnerar 1
min_lista[1] # returnerar 2
min_lista[2] # returnerar 3

Du kan också använda negativa index för att komma åt element från slutet av listan:

min_lista[-1] # returnerar 3 (det sista elementet)

Du kan lägga till objekt i en lista med metoden append():

my_list.append(4) # lägger till 4 i slutet av listan

Du kan ta bort objekt från en lista med antingen metoderna remove() eller pop():

my_list.remove(3) # tar bort 3 från listan

my_list.pop(2) # tar bort och returnerar 2 (det tredje elementet) från listan

Byt namn på dubbletter i listan i Python

Byt namn på dubbletter i lista i Python är en vanlig uppgift när man hanterar listor. Det innebär att du ersätter dubblettelement i en lista med unika värden. Detta kan göras med funktionen set() som tar bort alla dubbletter från en lista och returnerar en ny lista med bara unika element. Funktionen set() kan också användas för att byta namn på dubbletter genom att förse den med en mappning av gamla värden till nya värden. Om du till exempel har en lista med siffror och vill ersätta alla dubbletter med sina respektive kvadrater, kan du använda följande kod:

# Skapa en tom ordbok
mappning = {}

# Iterera över den ursprungliga listan
för objekt i min_lista:
# Kontrollera om objektet redan finns i ordboken
om objektet inte finns i mappningen:
# Om inte, lägg till den i ordboken och tilldela dess kvadrat som värde
mappning[objekt] = objekt * objekt

# Skapa en tom resultatlista
resultatlista = []

# Iterera över originallistan igen och ersätt varje element med dess kvadrat från ordboken för i i min_lista: result_list.append(mapping[i])

# Utskriftsresultat print(result_list)

Relaterade inlägg:

Lämna en kommentar