DSA Interview Prep · Pelajaran

Kamus dan Set dalam Python

Terokai pembinaan kamus dan set, ujian keahlian serta corak lazim seperti mengira kekerapan dengan collections.Counter.

Pelajaran 2 daripada 413 langkah

Kamus dan Set dalam Python ialah pelajaran DSA Interview Prep percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran DSA Interview Prep, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus DSA Interview Prep merangkumi sejumlah 4 pelajaran.

Kamus Python: Penyimpan Kunci-Nilai

Kamus Python memetakan kunci kepada nilai dengan carian, penyisipan dan pemadaman purata O(1). Kamus menjadi asas bagi masalah two-sum, semakan anagram dan pengiraan kekerapan. Kod ini menunjukkannya.

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}

Carian Selamat dengan .get()

Membaca kunci yang tiada menggunakan d[key] menyebabkan program terhenti dengan KeyError. Gunakan d.get(key, default) untuk mengembalikan nilai sandaran — tabiat selamat yang mengelakkan ralat semasa pelaksanaan yang tidak dijangka.

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 untuk Pengumpulan yang Lebih Kemas

defaultdict(list) mencipta senarai kosong secara automatik untuk setiap kunci baharu, jadi masalah pengumpulan tidak lagi memerlukan kod berulang. defaultdict(int) memulakan setiap kunci dengan 0 untuk memudahkan pengiraan.

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: Pemetaan Kekerapan Pantas

Counter ialah kamus yang direka untuk mengira: berikan apa-apa lelaran kepadanya dan anda akan mendapat pemetaan kekerapan serta-merta. most_common(k) mengembalikan k item teratas. Kod ini menunjukkan semakan anagram.

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: Koleksi Unik Tanpa Susunan

Set menyimpan item unik dengan ujian keahlian O(1). Gunakan {1, 2, 3} atau set(iterable) — tetapi {} menghasilkan kamus, jadi gunakan set() untuk set kosong. Set sangat berguna untuk mengesan pendua.

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)

Operasi Set untuk Temu Duga

Set melaksanakan operasi matematik: | gabungan, & persilangan, - beza, dan ^ beza simetri. Operasi ini menyelesaikan soalan jenis "elemen sepunya" dalam satu baris.

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

Ujian Keahlian: Senarai Berbanding Set

Struktur yang anda pilih mempengaruhi kelajuan. Menyemak in pada senarai mengambil masa O(n); pada set, O(1). Menukar senarai kepada set sebelum melakukan carian berulang ialah cara biasa untuk mempercepatkan program.

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]

Melakukan Lelaran pada Kamus: Kunci, Nilai, Item

Gelungkan kamus menggunakan .keys(), .values() atau .items(). Jangan sesekali memadam kunci di tengah-tengah gelung — kumpulkan kunci itu dalam senarai dahulu, kemudian padamkannya selepas gelung. Lihat kodnya.

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 yang Boleh Dicincang

frozenset ialah set yang tidak berubah, jadi ia boleh menjadi kunci kamus atau diletakkan di dalam set lain. Ia berguna untuk mengumpulkan anagram berdasarkan set hurufnya apabila susunan tidak penting.

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']]

Pemahaman Kamus untuk Transformasi

Pemahaman kamus membina pemetaan dalam satu baris: {k: v for ...}. Ia sangat berguna untuk menyongsangkan kamus atau menapis pasangan. Perhatikan bahawa penyongsangan memerlukan nilai yang unik. Lihat kodnya.

# 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}

Jujukan Berturutan Terpanjang

Set menyelesaikan masalah jujukan berturutan terpanjang dalam O(n): masukkan semua nombor ke dalam set, kemudian kira ke atas hanya daripada setiap nombor yang pendahulunya tiada. Pengisihan tidak diperlukan.

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)

Semakan Pantas

Semakan pantas — lihat sejauh mana idea kamus dan set daripada pelajaran ini telah anda kuasai. Percayai gerak hati anda. 🎯

Imbas Kembali Pelajaran

Imbas kembali: kamus memberikan carian O(1) untuk pengiraan dan pengumpulan, Counter dan defaultdict mengurangkan kod berulang, dan set menukar imbasan O(n) kepada semakan O(1).

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Kamus dan Set dalam Python” percuma?

Ya — teks penuh “Kamus dan Set dalam Python” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus DSA Interview Prep, tingkat taraf kepada CoddyKit PRO. Kursus DSA Interview Prep merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Kamus dan Set dalam Python”?

Terokai pembinaan kamus dan set, ujian keahlian serta corak lazim seperti mengira kekerapan dengan collections.Counter. Anda berlatih DSA Interview Prep menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan DSA Interview Prep?

Tiada pengalaman terdahulu diperlukan. Pembelajaran DSA Interview Prep di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Kamus dan Set dalam Python” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran DSA Interview Prep ini?

Ya. Setiap pelajaran DSA Interview Prep menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Senarai, Tuple dan Pemotongan
  2. Kamus dan Set dalam Python
  3. Pemahaman dan Fungsi Terbina Dalam
  4. Fungsi, Penutupan dan Lambda
← Kembali ke DSA Interview Prep