Vyřešeno: přejmenujte duplikáty v seznamu python

Přejmenování duplikátů v seznamu může být obtížně řešitelný problém, protože vyžaduje identifikaci duplikátů a poté rozhodnutí, jak je přejmenovat. To může být obzvláště náročné, pokud seznam obsahuje mnoho prvků nebo pokud prvky jsou složité objekty. Kromě toho může přejmenování duplikátů vyžadovat, abyste upravili další části kódu, které se spoléhají na původní názvy prvků, aby mohly nadále správně fungovat.

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 funkci nazvanou rename_duplicates, která přebírá seznam jako argument.
def rename_duplicates(lst):

# Poté vytvoří prázdnou množinu s názvem see a prázdný seznam s názvem new_lst.
viděno = set()
new_lst = []

# Poté iteruje položky v seznamu a zkontroluje, zda již nejsou v sadě zobrazených položek.
pro položku v lst:
if item not in see: # Pokud není, přidá ji do sady viděných položek a přidá ji do nového seznamu.
viděno.přidat (položka)
new_lst.append(item) # Pokud je, vytvoří jedinečnou verzi této položky přidáním přípony (např. '_1') k jejímu názvu a zkontroluje, zda tato nově vytvořená položka již není v sadě zobrazených položek.

else: # Pokud ano, zvyšuje příponu, dokud nenajde nepoužívanou verzi názvu této položky a přidá tuto nově vytvořenou položku jak do sady viděných položek, tak do nového seznamu, než tento nový seznam vrátí na konci jeho provádění.

new_item = item + '_1'

když je zobrazena nová_položka: # přípona přírůstku, dokud nebude jedinečná

suffix = int(new_item.split('_')[-1]) + 1 # získat poslední číslo a přidat k němu jedničku

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

viděno.přidat (nové

Seznamy v Pythonu

Seznamy v Pythonu jsou jednou z nejčastěji používaných datových struktur. Slouží k uložení kolekce položek, které mohou být libovolného typu, včetně dalších seznamů. Seznamy jsou proměnlivé, což znamená, že je lze po vytvoření změnit. Podporují také operace, jako je indexování, dělení na plátky a zřetězení.

Chcete-li vytvořit seznam v Pythonu, použijte hranaté závorky a každou položku oddělte čárkou:

můj_seznam = [1, 2, 3]

K jednotlivým prvkům v seznamu můžete přistupovat pomocí jejich indexu:
můj_seznam[0] # vrátí 1
můj_seznam[1] # vrátí 2
můj_seznam[2] # vrátí 3

Pro přístup k prvkům z konce seznamu můžete také použít záporné indexy:

my_list[-1] # vrátí 3 (poslední prvek)

Položky můžete do seznamu přidat pomocí metody append():

my_list.append(4) # přidá 4 na konec seznamu

Položky můžete ze seznamu odstranit pomocí metod remove() nebo pop():

my_list.remove(3) # odebere 3 ze seznamu

my_list.pop(2) # odstraní a vrátí 2 (třetí prvek) ze seznamu

Přejmenujte duplikáty v seznamu v Pythonu

Přejmenování duplikátů v seznamu v Pythonu je běžný úkol při práci se seznamy. Zahrnuje nahrazení duplicitních prvků v seznamu jedinečnými hodnotami. To lze provést pomocí funkce set(), která odstraní všechny duplicitní prvky ze seznamu a vrátí nový seznam pouze s jedinečnými prvky. Funkci set() lze také použít k přejmenování duplikátů tím, že jim poskytne mapování starých hodnot na hodnoty nové. Pokud máte například seznam čísel a chcete nahradit všechny duplikáty jejich příslušnými čtverci, můžete použít následující kód:

# Vytvořte prázdný slovník
mapování = {}

# Iterujte původní seznam
pro položku v my_list:
# Zkontrolujte, zda položka již ve slovníku existuje
pokud položka není v mapování:
# Pokud ne, přidejte jej do slovníku a přiřaďte jeho čtverec jako hodnotu
mapování[položka] = položka * položka

# Vytvořte prázdný seznam výsledků
seznam_výsledků = []

# Znovu opakujte původní seznam a nahraďte každý prvek jeho čtvercem ze slovníku pro i v my_list: result_list.append(mapping[i])

# Tisk výsledku print(result_list)

Související příspěvky:

Zanechat komentář