Python: coppie minime uguali di chiavi
Introduzione
Python è un linguaggio di programmazione flessibile ed efficace che offre un'ampia gamma di funzionalità. Un compito comune nella programmazione è scoprire insiemi di elementi in una raccolta che hanno raggiunto il pareggio con le chiavi. In questo articolo, esamineremo tre approcci distinti per risolvere questo problema utilizzando Python. Esamineremo gli algoritmi coinvolti e dedicheremo un minuto a parlare di alcune sintassi vitali utilizzate con i codici forniti con istruzioni passo passo e includeremo casi di codice con rendimento per illustrare le soluzioni. Quindi, cominciamo.
Metodi di coppie uguali di chiavi minime
Dizionari: in Python, i dizionari sono racchiusi tra parentesi graffe {} e comprendono insiemi di valori-chiave. Per ottenere il valore associato a una chiave, puoi utilizzare le parentesi quadre [] e inserire la chiave al loro interno.
Iterazione: per scorrere una raccolta, come una lista o una tupla, utilizzerai un ciclo for. Il cerchio for ti consente di accedere successivamente a ciascun componente all'interno della raccolta.
Funzioni Lambda: le funzioni Lambda sono piccole e misteriose capacità che possono essere caratterizzate in un'unica riga. Sono comunemente utilizzati come contese per capacità di ordine superiore o in circostanze in cui il lavoro è come se fosse richiesto per un breve periodo.
Ordinamento: la funzione sorted() in Python restituisce un elenco inutilizzato contenente tutti i componenti del primo elenco in ordine crescente. Riconosce un parametro chiave discrezionale, che indica un lavoro per districare una chiave di confronto da ciascun componente.
DefaultDict: La classe defaultdict del modulo collezioni potrebbe essere una sottoclasse della lezione dict incorporata. Sostituisce una strategia, __missing__(), che viene chiamata quando non viene trovata una chiave all'interno del riferimento alla parola. Per impostazione predefinita, restituisce la stima predefinita indicata durante l'inizializzazione dell'oggetto.
Approccio 1: utilizzare un dizionario
Uno dei modi migliori e più produttivi per scoprire l'aumento chiave minimo degli insiemi in Python è utilizzare un dizionario. Ecco i passaggi inclusi:
Algoritmo
Passaggio 1:Crea un dizionario vuoto per memorizzare i componenti e le relative chiavi di confronto.
Passaggio 2:Ripeti attraverso la raccolta di componenti.
Passaggio 3:Per ciascun componente, controlla se la sua chiave esiste nel dizionario.
Passaggio 4:Se la chiave esiste, confronta il componente corrente con il valore esistente relativo a quella chiave.
Passaggio 5:Se il componente corrente è più piccolo, aggiorna il valore all'interno del dizionario con il componente corrente.
Passaggio 6:Se la chiave non esiste nel dizionario, includi il componente corrente come valore relativo a quella chiave.
Passaggio 7:Dopo aver enfatizzato tutti i componenti, il dizionario conterrà l'aumentata di chiave minima agli insiemi.
Esempio
def find_minimum_key_equal_pairs(elements):
pairs = {}
for element in elements:
key = element[0]
value = element[1]
if key in pairs:
if value < pairs[key]:
pairs[key] = value
else:
pairs[key] = value
return pairs
elements = [('A', 5), ('B', 3), ('A', 2), ('C', 4), ('B', 1)]
print(find_minimum_key_equal_pairs(elements))
Produzione
{'A': 2, 'B': 1, 'C': 4}
Approccio 2: utilizzo di GroupBy da itertools
Python fornisce un modulo capace chiamato itertools che incorpora diverse capacità per controllare ed enfatizzare le raccolte. Una di queste funzioni è groupby, che raggruppa componenti continui in un iterabile basato su una funzione chiave. Ecco i passaggi inclusi nell'utilizzo di groupby per scoprire la minima interruzione chiave anche con i set:
Algoritmo
Passaggio 1:Importa la funzione groupby dal modulo itertools.
Passaggio 2:ordina la raccolta di componenti in base alla chiave.
Passaggio 3:Utilizzare la funzione groupby sui componenti ordinati, indicando la funzione chiave.
Passaggio 4:Esegui l'iterazione dei gruppi e scopri il valore minimo per ciascuna chiave.
Vediamo l'utilizzo del codice per questo approccio:
Esempio
from itertools import groupby
def find_minimum_key_equal_pairs(elements):
sorted_elements = sorted(elements, key=lambda x: x[0])
groups = groupby(sorted_elements, key=lambda x: x[0])
pairs = {key: min(value[1] for value in group) for key, group in groups}
return pairs
elements = [('A', 5), ('B', 3), ('A', 2), ('C', 4), ('B', 1)]
print(find_minimum_key_equal_pairs(elements))
Produzione
{'A': 2, 'B': 1, 'C': 4}
Approccio 3: utilizzo di DefaultDict
Un altro approccio per trovare l'aumento di chiave minima per gli insiemi in Python è utilizzare la lezione defaultdict dal modulo della raccolta. Il defaultdict inizializza naturalmente i valori per le chiavi che non esistono, il che lo rende utile per questo compito. Ecco i passaggi inclusi:
Algoritmo
Passaggio 1:importa la libreria richiesta.
Passaggio 2:Crea una protesta defaultdict con il valore predefinito impostato su Illimitatezza.
Passaggio 3:Crea una protesta defaultdict con il valore predefinito impostato su Illimitatezza.
Vediamo l'esecuzione del codice per questo approccio:
Esempio
from collections import defaultdict
def find_minimum_key_equal_pairs(elements):
pairs = defaultdict(lambda: float('inf'))
for key, value in elements:
if value < pairs[key]:
pairs[key] = value
return pairs
elements = [('A', 5), ('B', 3), ('A', 2), ('C', 4), ('B', 1)]
print(find_minimum_key_equal_pairs(elements))
Produzione
defaultdict(<function find_minimum_key_equal_pairs.<locals>.<lambda> at 0x000001C7712C0400>, {'A': 2, 'B': 1, 'C': 4})
Conclusione
Abbiamo studiato tre diversi approcci per trovare coppie minime uguali di chiavi in Python. Questi approcci includono l'utilizzo di dizionari, la funzione groupby del modulo itertools e la lezione defaultdict del modulo della raccolta. Prendendo in considerazione gli algoritmi e i casi di codice forniti, sarai in grado di risolvere in modo efficiente questo problema e ottenere il rendimento richiesto. La flessibilità e la sintassi espressiva di Python lo rendono una scelta favolosa per tali commissioni, offrendo agli ingegneri del software un kit di strumenti efficace per gestire un'ampia gamma di sfide di programmazione.