0Pricing
DSA Interview Prep · Lezione

Dizionari e set in Python

Esplori la creazione di dict e set, i test di appartenenza e schemi comuni come il conteggio delle frequenze con collections.Counter

Dizionari e set in Python è una lezione DSA Interview Prep gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DSA Interview Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DSA Interview Prep include 4 lezioni in totale.

Dict Python: archivi chiave-valore

Un dict di Python associa le chiavi ai valori, con ricerche, inserimenti e cancellazioni mediamente O(1). È alla base di two-sum, dei controlli degli anagrammi e del conteggio delle frequenze. Il codice lo mostra in pratica.

d = {'apple': 3, 'banana': 5}
print(d['apple'])   # 3
d['cherry'] = 7
print(len(d))       # 3
print('banana' in d)  # True
del d['apple']
print(d)            # {'banana': 5, 'cherry': 7}

Ricerca sicura con .get()

Leggere una chiave mancante con d[key] genera un KeyError. Usi d.get(key, default) per restituire invece un valore di fallback: è una buona abitudine che evita errori di runtime imprevisti.

freq = {}
words = ['the', 'cat', 'sat', 'on', 'the', 'mat']
for w in words:
    freq[w] = freq.get(w, 0) + 1
print(freq)
# {'the': 2, 'cat': 1, 'sat': 1, 'on': 1, 'mat': 1}

print(freq.get('dog', 0))  # 0  (no KeyError)

defaultdict per raggruppare più facilmente

defaultdict(list) crea automaticamente una list vuota per ogni nuova chiave, eliminando il codice ripetitivo dei problemi di raggruppamento. defaultdict(int) inizializza ogni chiave a 0, facilitando il conteggio.

from collections import defaultdict

groups = defaultdict(list)
words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
for w in words:
    key = ''.join(sorted(w))  # canonical anagram key
    groups[key].append(w)

print(list(groups.values()))
# [['eat','tea','ate'], ['tan','nat'], ['bat']]

Counter: mappe rapide delle frequenze

Counter è un dict pensato per il conteggio: gli passi qualsiasi iterabile e ottieni immediatamente una mappa delle frequenze. most_common(k) restituisce i primi k elementi. Il codice mostra un controllo degli anagrammi.

from collections import Counter

c = Counter('abracadabra')
print(c)           # Counter({'a':5,'b':2,'r':2,'c':1,'d':1})
print(c.most_common(2))  # [('a', 5), ('b', 2)]

# Valid anagram check
def is_anagram(s, t):
    return Counter(s) == Counter(t)

print(is_anagram('anagram', 'nagaram'))  # True

Set Python: raccolte non ordinate di elementi unici

Un set contiene elementi unici e consente verifiche di appartenenza in O(1). Usi {1, 2, 3} o set(iterable); tuttavia, {} crea un dict, quindi per un set vuoto usi set(). È ottimo per individuare i duplicati.

seen = set()
nums = [1, 2, 3, 2, 1, 4]
duplicates = []
for n in nums:
    if n in seen:          # O(1) check
        duplicates.append(n)
    seen.add(n)
print(duplicates)  # [2, 1]
print(len(seen))   # 4  (unique values)

Operazioni sui set nei colloqui tecnici

I set consentono operazioni matematiche: | unione, & intersezione, - differenza, ^ differenza simmetrica. Queste operazioni risolvono in una riga i problemi del tipo «elementi comuni».

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

print(a | b)  # {1, 2, 3, 4, 5, 6}  union
print(a & b)  # {3, 4}              intersection
print(a - b)  # {1, 2}              difference
print(a ^ b)  # {1, 2, 5, 6}        symmetric diff

Verifica di appartenenza: list o set

La struttura scelta cambia la velocità. Verificare in su una list costa O(n), mentre su un set costa O(1). Convertire una list in un set prima di eseguire ricerche ripetute è un'ottimizzazione comune.

word_list = ['apple', 'banana', 'cherry', 'date']
word_set  = set(word_list)

# O(n) per check
print('banana' in word_list)  # True

# O(1) per check
print('banana' in word_set)   # True

# Practical example: find common elements
a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6, 7]
common = [x for x in a if x in set(b)]
print(common)  # [3, 4, 5]

Iterare sui dict: chiavi, valori ed elementi

Scorra un dict con .keys(), .values() o .items(). Non elimini mai chiavi durante il ciclo: le raccolga prima in una list e le elimini in seguito. Veda il codice.

scores = {'Alice': 90, 'Bob': 75, 'Carol': 88}

for name, score in scores.items():
    print(f'{name}: {score}')

# Find key with max value
best = max(scores, key=scores.get)
print(best)  # Alice

# Safe deletion
to_del = [k for k, v in scores.items() if v < 80]
for k in to_del:
    del scores[k]
print(scores)  # {'Alice': 90, 'Carol': 88}

Frozenset: set hashable

Un frozenset è un set immutabile, quindi può essere una chiave di un dict o trovarsi all'interno di un altro set. È utile per raggruppare gli anagrammi in base all'insieme delle loro lettere quando l'ordine non conta.

from collections import defaultdict

words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
groups = defaultdict(list)
for w in words:
    key = frozenset(w)  # hashable; 'eat','tea','ate' all share same key
    groups[key].append(w)

print([sorted(g) for g in groups.values()])
# [['ate','eat','tea'], ['nat','tan'], ['bat']]

Dict comprehension per le trasformazioni

Le dict comprehension costruiscono una mappatura in una riga: {k: v for ...}. Sono ottime per invertire un dict o filtrare coppie. Attenzione: l'inversione presuppone che i valori siano unici. Veda il codice.

# Invert a dict
original = {'a': 1, 'b': 2, 'c': 3}
inverted = {v: k for k, v in original.items()}
print(inverted)  # {1:'a', 2:'b', 3:'c'}

# Filter by value
scores = {'Alice': 90, 'Bob': 55, 'Carol': 78}
passing = {k: v for k, v in scores.items() if v >= 60}
print(passing)  # {'Alice': 90, 'Carol': 78}

La sequenza consecutiva più lunga

I set risolvono il problema della sequenza consecutiva più lunga in O(n): inserisca tutti i numeri in un set, poi conti in avanti solo a partire dai numeri il cui predecessore non è presente. Non serve ordinare.

def longest_consecutive(nums):
    num_set = set(nums)
    best = 0
    for n in num_set:
        if n - 1 not in num_set:  # start of sequence
            cur = n
            streak = 1
            while cur + 1 in num_set:
                cur += 1
                streak += 1
            best = max(best, streak)
    return best

print(longest_consecutive([100,4,200,1,3,2]))  # 4 (1,2,3,4)

Verifica rapida

Verifica rapida: vediamo quanto sono rimaste impresse le idee su dict e set di questa lezione. Si fidi del suo intuito. 🎯

Riepilogo della lezione

Riepilogo: i dict offrono ricerche O(1) per conteggio e raggruppamento, Counter e defaultdict eliminano il codice ripetitivo e i set trasformano scansioni O(n) in verifiche O(1).

Domande Frequenti

La lezione «Dizionari e set in Python» è gratuita?

Sì — il testo completo di «Dizionari e set in Python» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DSA Interview Prep, passa a CoddyKit PRO. Il corso DSA Interview Prep include 4 lezioni in totale.

Cosa imparerò in «Dizionari e set in Python»?

Esplori la creazione di dict e set, i test di appartenenza e schemi comuni come il conteggio delle frequenze con collections.Counter Eserciti DSA Interview Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DSA Interview Prep?

Non è richiesta alcuna esperienza precedente. DSA Interview Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Dizionari e set in Python»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DSA Interview Prep?

Sì. Ogni lezione DSA Interview Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Liste, tuple e slicing
  2. Dizionari e set in Python
  3. Comprehension e funzioni built-in
  4. Funzioni, closure e lambda
← Torna a DSA Interview Prep