collections — koleksiyon ve kapsayıcı türleri¶
Bu modül, yerleşik list, tuple, dict ve set türlerini tamamlayan özelleşmiş kapsayıcı veri türleri sağlar: çift uçlu bir kuyruk (deque), adlandırılmış alanlara sahip demet oluşturan bir fabrika (namedtuple()) ve ekleme sırasını koruyan bir sözlük (OrderedDict).
Sınıflar¶
- class collections.deque(iterable: Iterable, maxlen: int, flags: int = 0)¶
Deque (çift uçlu kuyruk) yapıları, kuyruğun her iki ucundan da O(1) ekleme ve çıkarma işlemlerini destekleyen liste benzeri kapsayıcılardır. Yeni deque’ler aşağıdaki argümanlar kullanılarak oluşturulur:
iterable, deque oluşturulurken onu doldurmak için kullanılan bir yinelenebilir nesnedir. Başlangıçta boş bir deque oluşturmak için boş bir demet veya liste olabilir.
maxlen belirtilmek zorundadır ve deque bu maksimum uzunlukla sınırlandırılır. Deque dolduğunda, eklenen yeni öğeler karşı uçtaki öğeleri atar.
İsteğe bağlı flags değeri, öğe eklerken taşma denetimi yapmak için 1 olabilir.
Deque nesneleri
bool,len(), yineleme ve abonelik (subscript) okuma/yazma işlemlerini destekler. Ayrıca aşağıdaki yöntemlere sahiptirler:- append(x: Any) None¶
x öğesini deque’in sağ tarafına ekler. Taşma denetimi etkinse ve kuyrukta yer kalmamışsa
IndexErrorhatası verir.
- appendleft(x: Any) None¶
x öğesini deque’in sol tarafına ekler. Taşma denetimi etkinse ve kuyrukta yer kalmamışsa
IndexErrorhatası verir.
- pop() Any¶
Deque’in sağ tarafından bir öğeyi kaldırıp döndürür. Hiç öğe yoksa
IndexErrorhatası verir.
- popleft() Any¶
Deque’in sol tarafından bir öğeyi kaldırıp döndürür. Hiç öğe yoksa
IndexErrorhatası verir.
- extend(iterable: Iterable) None¶
iterable içindeki tüm öğeleri deque’in sağına ekleyerek deque’i genişletir. Taşma denetimi etkinse ve deque’te yer kalmamışsa
IndexErrorhatası verir.
- collections.namedtuple(name: str, fields: str | Sequence[str]) type¶
Bu, belirli bir ada ve alan kümesine sahip yeni bir namedtuple türü oluşturmak için kullanılan bir fabrika fonksiyonudur. Bir namedtuple, alanlarına yalnızca sayısal indeksle değil, aynı zamanda sembolik alan adları kullanan bir öznitelik erişim sözdizimiyle de erişilmesine olanak tanıyan bir tuple alt sınıfıdır. Fields, alan adlarını belirten bir dizgi dizisidir. CPython ile uyumluluk için boşlukla ayrılmış alan adları içeren bir dizgi de olabilir (ancak bu daha az verimlidir). Kullanım örneği:
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]
Örnekler ayrıca aşağıdaki yöntemi de sağlar:
- collections._asdict() OrderedDict
Alan adlarını ve değerlerini bir
OrderedDictolarak döndürür.
- class collections.OrderedDict(*args: Any, **kwargs: Any)¶
Eklenen anahtarların sırasını hatırlayan ve koruyan
dicttürünün bir alt sınıfı.dictile aynı kurucu biçimlerini kabul eder ((key, value)çiftlerinden oluşan bir yinelenebilir nesne, başka bir eşleme veya anahtar kelime argümanları). Sıralı sözlük üzerinde yineleme yapıldığında, anahtarlar/öğeler eklendikleri sırayla döndürülür: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)
Çıktı:
z 1 a 2 w 5 b 3
- popitem() Tuple¶
Sözlükten bir (key, value) çiftini kaldırıp döndürür. Çiftler LIFO sırasıyla döndürülür.
CPython’dan farkı
OrderedDict.popitem(),last=Falseargümanını desteklemez ve varsa her zaman son öğeyi kaldırıp döndürür.Bunun için bir geçici çözüm, ilk öğeyi kaldırmak amacıyla
pop(<first_key>)kullanmaktır:first_key = next(iter(d)) d.pop(first_key)