0Pricing
DSA Interview Prep · Pelajaran

Dictionary dan Set dalam Python

Pelajari pembuatan dict dan set, pengujian keanggotaan, serta pola umum seperti menghitung frekuensi dengan collections.Counter.

Dictionary dan Set dalam Python adalah pelajaran DSA Interview Prep gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DSA Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DSA Interview Prep mencakup 4 pelajaran total.

Kamus Python: Penyimpanan Kunci-Nilai

dict Python memetakan kunci ke nilai dengan pencarian, penyisipan, dan penghapusan rata-rata O(1). dict menjadi dasar untuk soal two-sum, pemeriksaan anagram, dan penghitungan frekuensi. Kode 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}

Pencarian Aman dengan .get()

Membaca kunci yang tidak ada dengan d[key] menyebabkan program gagal dengan KeyError. Gunakan d.get(key, default) untuk mengembalikan nilai cadangan—kebiasaan aman yang menghindari kesalahan saat waktu berjalan yang tidak terduga.

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 Pengelompokan yang Lebih Rapi

defaultdict(list) secara otomatis membuat daftar kosong untuk setiap kunci baru, sehingga masalah pengelompokan tidak lagi memerlukan kode pendukung yang berulang. defaultdict(int) memulai setiap kunci dari 0 agar penghitungan menjadi mudah.

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 Frekuensi yang Cepat

Counter adalah dict yang dibuat untuk menghitung: berikan iterable apa pun dan Anda langsung mendapatkan pemetaan frekuensi. most_common(k) mengembalikan k item teratas. Kode ini menunjukkan pemeriksaan 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

Himpunan Python: Kumpulan Unik Tanpa Urutan

set menyimpan item unik dengan pemeriksaan keanggotaan O(1). Gunakan {1, 2, 3} atau set(iterable)—namun {} membuat dict, jadi gunakan set() untuk himpunan kosong. Sangat berguna untuk menemukan duplikat.

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 Himpunan untuk Wawancara

Himpunan mendukung operasi matematika: | gabungan, & irisan, - selisih, dan ^ selisih simetris. Operasi ini menyelesaikan pertanyaan bergaya "elemen yang sama" 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

Pemeriksaan Keanggotaan: Daftar atau Himpunan

Struktur yang Anda pilih memengaruhi kecepatan. Pemeriksaan in pada daftar membutuhkan O(n), sedangkan pada himpunan membutuhkan O(1). Mengubah daftar menjadi himpunan sebelum melakukan pencarian berulang adalah cara umum untuk mempercepat 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 Iterasi pada dict: Kunci, Nilai, Item

Lakukan perulangan pada dict dengan .keys(), .values(), atau .items(). Jangan pernah menghapus kunci di tengah perulangan—kumpulkan kunci tersebut dalam daftar terlebih dahulu, lalu hapus setelahnya. Lihat kodenya.

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: Himpunan yang Dapat Di-hash

frozenset adalah himpunan yang tidak dapat diubah, sehingga dapat menjadi kunci dict atau berada di dalam himpunan lain. Berguna untuk mengelompokkan anagram berdasarkan himpunan hurufnya ketika urutan 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 dict untuk Transformasi

Pemahaman dict membuat pemetaan dalam satu baris: {k: v for ...}. Sangat berguna untuk membalik dict atau memfilter pasangan. Perhatikan: pembalikan mengasumsikan bahwa nilainya unik. Lihat kodenya.

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

Urutan Berurutan Terpanjang

Himpunan menyelesaikan soal urutan berurutan terpanjang dalam O(n): masukkan semua bilangan ke dalam himpunan, lalu hitung naik hanya dari setiap bilangan yang pendahulunya tidak ada. Pengurutan 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)

Pemeriksaan Singkat

Pemeriksaan singkat—lihat seberapa baik Anda mengingat gagasan tentang dict dan set dari pelajaran ini. Percayalah pada intuisi Anda. 🎯

Rangkuman Pelajaran

Rangkuman: dict menyediakan pencarian O(1) untuk penghitungan dan pengelompokan, Counter dan defaultdict mengurangi kode pendukung yang berulang, dan set mengubah pemindaian O(n) menjadi pemeriksaan O(1).

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Dictionary dan Set dalam Python” gratis?

Ya — teks lengkap “Dictionary dan Set dalam Python” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DSA Interview Prep, upgrade ke CoddyKit PRO. Kursus DSA Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Dictionary dan Set dalam Python”?

Pelajari pembuatan dict dan set, pengujian keanggotaan, serta pola umum seperti menghitung frekuensi dengan collections.Counter. Kamu berlatih DSA Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai DSA Interview Prep?

Tidak diperlukan pengalaman sebelumnya. DSA Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Dictionary dan Set dalam Python” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran DSA Interview Prep ini?

Ya. Setiap pelajaran DSA Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. List, Tuple, dan Slicing
  2. Dictionary dan Set dalam Python
  3. Comprehension dan Fungsi Bawaan
  4. Fungsi, Closure, dan Lambda
← Kembali ke DSA Interview Prep