Vyriešené: premenujte duplikáty v zozname python

Premenovanie duplikátov v zozname môže byť ťažko riešiteľný problém, pretože si vyžaduje identifikáciu duplikátov a následné rozhodnutie, ako ich premenovať. To môže byť obzvlášť náročné, ak zoznam obsahuje veľa prvkov alebo ak prvky sú zložité objekty. Okrem toho môže premenovanie duplikátov vyžadovať, aby ste upravili iné časti kódu, ktoré sa spoliehajú na pôvodné názvy prvkov, aby mohli naďalej správne fungovať.

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

# Tento kód definuje funkciu s názvom rename_duplicates, ktorá berie ako argument zoznam.
def rename_duplicates(lst):

# Potom vytvorí prázdnu množinu s názvom see a prázdny zoznam s názvom new_lst.
videl = set()
new_lst = []

# Potom iteruje položky v zozname a skontroluje, či sa už nenachádzajú v množine zobrazených položiek.
pre položku v lst:
ak položka nie je viditeľná: # Ak nie je, pridá ju do množiny zobrazených položiek a pridá ju do nového zoznamu.
videl.pridaj(položka)
new_lst.append(item) # Ak je, vytvorí jedinečnú verziu tejto položky pridaním prípony (napr. '_1') k jej názvu a skontroluje, či táto novovytvorená položka už nie je v množine zobrazených položiek.

else: # Ak áno, zväčší príponu, kým nenájde nepoužitú verziu názvu tejto položky a pridá túto novovytvorenú položku do množiny zobrazených položiek aj do nového zoznamu predtým, ako vráti tento nový zoznam na konci jeho vykonania.

new_item = item + '_1'

keď je zobrazená nová_položka: # prípona prírastku, kým nebude jedinečná

suffix = int(new_item.split('_')[-1]) + 1 # získať posledné číslo a pridať k nemu jedno

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

videl.pridať(nové

Zoznamy v Pythone

Zoznamy v Pythone sú jednou z najčastejšie používaných dátových štruktúr. Slúžia na uloženie kolekcie položiek, ktoré môžu byť akéhokoľvek typu vrátane iných zoznamov. Zoznamy sú meniteľné, čo znamená, že ich možno po vytvorení zmeniť. Podporujú tiež operácie, ako je indexovanie, rezanie a zreťazenie.

Ak chcete vytvoriť zoznam v Pythone, použite hranaté zátvorky a každú položku oddeľte čiarkou:

môj_zoznam = [1, 2, 3]

K jednotlivým prvkom v zozname môžete pristupovať pomocou ich indexu:
my_list[0] # vráti 1
my_list[1] # vráti 2
my_list[2] # vráti 3

Na prístup k prvkom z konca zoznamu môžete použiť aj záporné indexy:

my_list[-1] # vráti 3 (posledný prvok)

Položky môžete do zoznamu pridať pomocou metódy append():

my_list.append(4) # pridá 4 na koniec zoznamu

Položky môžete zo zoznamu odstrániť pomocou metód remove() alebo pop():

my_list.remove(3) # odstráni 3 zo zoznamu

my_list.pop(2) # odstráni a vráti 2 (tretí prvok) zo zoznamu

Premenujte duplikáty v zozname v Pythone

Premenovanie duplikátov v zozname v Pythone je bežnou úlohou pri práci so zoznamami. Zahŕňa nahradenie duplicitných prvkov v zozname jedinečnými hodnotami. Dá sa to urobiť pomocou funkcie set(), ktorá odstráni všetky duplicitné prvky zo zoznamu a vráti nový zoznam iba s jedinečnými prvkami. Funkciu set() je možné použiť aj na premenovanie duplikátov tak, že im poskytnete mapovanie starých hodnôt na nové hodnoty. Napríklad, ak máte zoznam čísel a chcete nahradiť všetky duplikáty ich príslušnými štvorcami, môžete použiť nasledujúci kód:

# Vytvorte prázdny slovník
mapovanie = {}

# Iterujte pôvodný zoznam
pre položku v mojom_zozname:
# Skontrolujte, či položka už v slovníku existuje
ak položka nie je v mapovaní:
# Ak nie, pridajte ho do slovníka a priraďte jeho štvorec ako hodnotu
mapovanie[položka] = položka * položka

# Vytvorte prázdny zoznam výsledkov
zoznam_výsledkov = []

# Znovu opakujte pôvodný zoznam a nahraďte každý prvok jeho štvorcom zo slovníka pre i v mojom_zozname: result_list.append(mapping[i])

# Vytlačiť výsledok tlače (zoznam_výsledkov)

Súvisiace príspevky:

Pridať komentár