Kamus dan Set dalam Python
Terokai pembinaan kamus dan set, ujian keahlian serta corak lazim seperti mengira kekerapan dengan collections.Counter.
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')) # TrueSet 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 diffUjian 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).
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
- Senarai, Tuple dan Pemotongan
- Kamus dan Set dalam Python
- Pemahaman dan Fungsi Terbina Dalam
- Fungsi, Penutupan dan Lambda