collections --- tipe koleksi dan kontainer¶
Modul ini menyediakan tipe data kontainer khusus yang melengkapi bawaan list, tuple, dict, dan set: antrean berujung ganda (deque), pabrik tuple-dengan-bidang-bernama (namedtuple()), dan dict yang mempertahankan urutan (OrderedDict).
Kelas¶
- class collections.deque(iterable: Iterable, maxlen: int, flags: int = 0)¶
Deque (antrean berujung ganda) adalah kontainer mirip list yang mendukung append dan pop O(1) dari kedua sisi deque. Deque baru dibuat menggunakan argumen berikut:
iterable adalah iterable yang digunakan untuk mengisi deque saat dibuat. Dapat berupa tuple atau list kosong untuk membuat deque yang awalnya kosong.
maxlen harus ditentukan dan deque akan dibatasi hingga panjang maksimum ini. Setelah deque penuh, setiap item baru yang ditambahkan akan membuang item dari ujung yang berlawanan.
flags opsional dapat bernilai 1 untuk memeriksa overflow saat menambahkan item.
Objek Deque mendukung
bool,len(), iterasi, serta load dan store subscript. Mereka juga memiliki metode berikut:- append(x: Any) None¶
Tambahkan x ke sisi kanan deque. Memunculkan
IndexErrorjika pemeriksaan overflow diaktifkan dan tidak ada ruang lagi di antrean.
- appendleft(x: Any) None¶
Tambahkan x ke sisi kiri deque. Memunculkan
IndexErrorjika pemeriksaan overflow diaktifkan dan tidak ada ruang lagi di antrean.
- pop() Any¶
Hapus dan kembalikan item dari sisi kanan deque. Memunculkan
IndexErrorjika tidak ada item yang tersedia.
- popleft() Any¶
Hapus dan kembalikan item dari sisi kiri deque. Memunculkan
IndexErrorjika tidak ada item yang tersedia.
- extend(iterable: Iterable) None¶
Perluas deque dengan menambahkan semua item dari iterable ke sisi kanan deque. Memunculkan
IndexErrorjika pemeriksaan overflow diaktifkan dan tidak ada ruang lagi di deque.
- collections.namedtuple(name: str, fields: str | Sequence[str]) type¶
Ini adalah fungsi pabrik untuk membuat tipe namedtuple baru dengan nama dan sekumpulan bidang tertentu. Namedtuple adalah subkelas tuple yang memungkinkan akses ke bidang-bidangnya tidak hanya melalui indeks numerik, tetapi juga dengan sintaks akses atribut menggunakan nama bidang simbolis. Fields adalah urutan string yang menentukan nama bidang. Untuk kompatibilitas dengan CPython, ini juga dapat berupa string dengan nama bidang yang dipisahkan spasi (tetapi ini kurang efisien). Contoh penggunaan:
from collections import namedtuple MyTuple = namedtuple("MyTuple", ("id", "name")) t1 = MyTuple(1, "foo") t2 = MyTuple(2, "bar") print(t1.name) assert t2.name == t2[1]
Instans juga menyediakan metode berikut:
- collections._asdict() OrderedDict
Mengembalikan nama bidang dan nilainya sebagai
OrderedDict.
- class collections.OrderedDict(*args: Any, **kwargs: Any)¶
Subkelas tipe
dictyang mengingat dan mempertahankan urutan kunci yang ditambahkan. Menerima bentuk konstruktor yang sama sepertidict(iterable pasangan(key, value), pemetaan lain, atau argumen kata kunci). Saat ordered dict diiterasi, kunci/item dikembalikan dalam urutan penambahannya:from collections import OrderedDict # To make benefit of ordered keys, OrderedDict should be initialized # from sequence of (key, value) pairs. d = OrderedDict([("z", 1), ("a", 2)]) # More items can be added as usual d["w"] = 5 d["b"] = 3 for k, v in d.items(): print(k, v)
Keluaran:
z 1 a 2 w 5 b 3
- popitem() Tuple¶
Hapus dan kembalikan pasangan (key, value) dari kamus. Pasangan dikembalikan dalam urutan LIFO.
Perbedaan dengan CPython
OrderedDict.popitem()tidak mendukung argumenlast=Falsedan akan selalu menghapus serta mengembalikan item terakhir jika ada.Solusi untuk ini adalah menggunakan
pop(<first_key>)untuk menghapus item pertama:first_key = next(iter(d)) d.pop(first_key)