Riješeno: preimenujte duplikate u list python

Preimenovanje duplikata na popisu može biti težak problem za riješiti jer zahtijeva da identificirate duplikate i zatim odlučite kako ih preimenovati. To može biti posebno teško ako popis sadrži mnogo elemenata ili ako su elementi složeni objekti. Osim toga, preimenovanje duplikata može zahtijevati izmjenu drugih dijelova koda koji se oslanjaju na izvorna imena elemenata kako bi nastavili pravilno funkcionirati.

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

# Ovaj kod definira funkciju zvanu rename_duplicates koja uzima popis kao argument.
def rename_duplicates(lst):

# Zatim stvara prazan skup pod nazivom seen i praznu listu pod nazivom new_lst.
viđen = set()
novi_lst = []

# Zatim iterira kroz stavke na popisu i provjerava jesu li već u skupu viđenih stavki.
za stavku u lst:
if item not in seen: # Ako nije, dodaje ga skupu viđenih stavki i pridodaje novom popisu.
seen.add(item)
new_lst.append(item) # Ako jest, stvara jedinstvenu verziju te stavke dodavanjem sufiksa (npr. '_1') njenom imenu i provjerava je li ta novostvorena stavka već u skupu viđenih stavki.

else: # Ako je tako, povećava sufiks dok ne pronađe neiskorištenu verziju naziva te stavke i dodaje ovu novostvorenu stavku u skup viđenih stavki i na novi popis prije vraćanja ovog novog popisa na kraju njegovog izvršenja.

nova_stavka = stavka + '_1'

dok je nova_stavka u seen: # povećavanje sufiksa do jedinstvenog

sufiks = int(new_item.split('_')[-1]) + 1 # dohvati zadnji broj i dodaj mu jedan

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

viđeno.dodaj(novo

Popisi u Pythonu

Popisi u Pythonu jedna su od najčešće korištenih struktura podataka. Koriste se za pohranu zbirke stavki, koje mogu biti bilo koje vrste, uključujući druge popise. Popisi su promjenjivi, što znači da se mogu mijenjati nakon što su stvoreni. Oni također podržavaju operacije kao što su indeksiranje, rezanje i ulančavanje.

Za izradu popisa u Pythonu koristite uglate zagrade i svaku stavku odvojite zarezom:

moj_list = [1, 2, 3]

Pojedinačnim elementima na popisu možete pristupiti koristeći njihov indeks:
my_list[0] # vraća 1
my_list[1] # vraća 2
my_list[2] # vraća 3

Također možete koristiti negativne indekse za pristup elementima s kraja popisa:

my_list[-1] # vraća 3 (zadnji element)

Možete dodati stavke na popis pomoću metode append():

my_list.append(4) # dodaje 4 na kraj liste

Možete ukloniti stavke s popisa pomoću metoda remove() ili pop():

my_list.remove(3) # uklanja 3 s popisa

my_list.pop(2) # uklanja i vraća 2 (treći element) s liste

Preimenujte duplikate na popisu u Pythonu

Preimenovanje duplikata na popisu u Pythonu uobičajen je zadatak kada se radi s popisima. Uključuje zamjenu dupliciranih elemenata na popisu jedinstvenim vrijednostima. To se može učiniti pomoću funkcije set(), koja uklanja sve duplicirane elemente s popisa i vraća novi popis samo s jedinstvenim elementima. Funkcija set() također se može koristiti za preimenovanje duplikata pružajući joj preslikavanje starih vrijednosti u nove vrijednosti. Na primjer, ako imate popis brojeva i želite zamijeniti sve duplikate odgovarajućim kvadratima, možete upotrijebiti sljedeći kod:

# Napravite prazan rječnik
mapiranje = {}

# Iteracija preko izvornog popisa
za stavku u mojoj_listi:
# Provjerite postoji li stavka već u rječniku
ako stavka nije u mapiranju:
# Ako nije, dodajte ga u rječnik i dodijelite njegov kvadrat kao vrijednost
preslikavanje[stavka] = stavka * stavka

# Napravite prazan popis rezultata
popis_rezultata = []

# Ponovno ponovite izvorni popis i zamijenite svaki element njegovim kvadratom iz rječnika za i u my_list: result_list.append(mapping[i])

# Ispis rezultata print(result_list)

Povezani postovi:

Ostavite komentar