0Pricing
Python Academy · Pelajaran

namedtuple dan OrderedDict

Koleksi praktis lainnya

namedtuple dan OrderedDict adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 4 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 Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Dua koleksi praktis lainnya

Modul collections mencakup namedtuple untuk tupel mirip rekaman yang mudah dibaca dan OrderedDict untuk kamus dengan metode pengurutan tambahan.

Impor keduanya dengan from collections import namedtuple, OrderedDict.

from collections import namedtuple, OrderedDict
print(namedtuple)
print(OrderedDict)

Mendefinisikan tupel bernama

namedtuple(name, fields) membuat subkelas tupel baru. Anda memberikan nama tipe dan daftar nama bidang. Hasilnya adalah kelas yang dapat Anda buat instansnya.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p)

Mengakses berdasarkan nama

Keunggulan utamanya: baca bidang berdasarkan nama, bukan berdasarkan nomor indeks yang membingungkan, sehingga kode jauh lebih mudah dibaca.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p.x)
print(p.y)

Tetap merupakan tupel

Tupel bernama tetap merupakan tupel sungguhan, jadi pengindeksan, pembongkaran, dan iterasi semuanya tetap berfungsi.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p[0])
x, y = p
print(x + y)

Tidak dapat diubah, tetapi dapat diganti

Seperti semua tupel, tupel bernama tidak dapat diubah. Untuk mendapatkan salinan yang telah diubah, gunakan ._replace(), yang mengembalikan instans baru.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
q = p._replace(y=10)
print(p)
print(q)

Mengonversi menjadi kamus

._asdict() mengubah tupel bernama menjadi kamus biasa yang memetakan nama bidang ke nilai.

from collections import namedtuple
Car = namedtuple('Car', ['make', 'year'])
c = Car('Toyota', 2026)
print(c._asdict())

Nilai bawaan

Berikan defaults saat mendefinisikan tupel bernama. Nilai bawaan berlaku untuk bidang paling kanan, sehingga Anda dapat mengabaikannya saat membuat instans.

from collections import namedtuple
User = namedtuple('User', ['name', 'role'], defaults=['guest'])
print(User('Alice'))
print(User('Bob', 'admin'))

Memeriksa bidang

Atribut ._fields mencantumkan nama bidang, yang berguna untuk introspeksi atau membuat kode generik.

from collections import namedtuple
Color = namedtuple('Color', ['r', 'g', 'b'])
print(Color._fields)

Dasar-dasar OrderedDict

OrderedDict mengingat urutan penyisipan. Sejak Python 3.7, kamus biasa juga mempertahankan urutan, tetapi OrderedDict menambahkan metode pengurutan tambahan yang tidak tersedia dengan cara lain.

from collections import OrderedDict
od = OrderedDict()
od['first'] = 1
od['second'] = 2
print(od)

move_to_end

.move_to_end(key) memindahkan kunci ke bagian akhir, atau ke bagian awal dengan last=False. Fitur ini unik untuk OrderedDict dan berguna untuk logika bergaya LRU.

from collections import OrderedDict
od = OrderedDict(a=1, b=2, c=3)
od.move_to_end('a')
print(list(od.keys()))
od.move_to_end('c', last=False)
print(list(od.keys()))

Kesamaan yang peka terhadap urutan

Dua objek OrderedDict dianggap sama hanya jika elemennya berada dalam urutan yang sama. Kamus biasa mengabaikan urutan saat dibandingkan.

from collections import OrderedDict
a = OrderedDict([('x', 1), ('y', 2)])
b = OrderedDict([('y', 2), ('x', 1)])
print(a == b)
print(dict(a) == dict(b))

Pemeriksaan cepat

Bagaimana cara membuat salinan tupel bernama yang telah diubah, karena tupel tersebut tidak dapat diubah?

Ringkasan: tupel bernama dan OrderedDict

Ringkasan:

  • namedtuple(name, fields) membuat rekaman yang mudah dibaca dan tidak dapat diubah, dengan akses berdasarkan nama.
  • Gunakan ._replace() untuk membuat salinan yang diubah dan ._asdict() untuk mengonversinya menjadi kamus.
  • OrderedDict mempertahankan urutan penyisipan dan menambahkan .move_to_end().
  • Kesamaan OrderedDict peka terhadap urutan, tidak seperti kamus biasa.
from collections import namedtuple
Pt = namedtuple('Pt', ['x', 'y'])
print(Pt(1, 2)._asdict())

Pertanyaan yang Sering Diajukan

Apakah pelajaran “namedtuple dan OrderedDict” gratis?

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

Apa yang akan aku pelajari di “namedtuple dan OrderedDict”?

Koleksi praktis lainnya Kamu berlatih Python Academy 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 Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy 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 4 dari 4.

Berapa lama pelajaran “namedtuple dan OrderedDict” 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 Python Academy ini?

Ya. Setiap pelajaran Python Academy 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. Counter
  2. defaultdict
  3. deque
  4. namedtuple dan OrderedDict
← Kembali ke Python Academy