collections — gyűjtemény- és tárolótípusok¶
Ez a modul speciális tárolóadattípusokat biztosít, amelyek kiegészítik a beépített list, tuple, dict és set típusokat: egy kétvégű sort (deque), egy névvel ellátott mezőkkel rendelkező tuple-előállítót (namedtuple()) és egy a beillesztési sorrendet megőrző szótárat (OrderedDict).
Osztályok¶
- class collections.deque(iterable: Iterable, maxlen: int, flags: int = 0)¶
A deque-ek (kétvégű sorok) listaszerű tárolók, amelyek O(1) idejű hozzáfűzést és kivételt támogatnak a deque bármelyik végéről. Új deque-eket a következő argumentumokkal lehet létrehozni:
Az iterable egy bejárható objektum, amellyel a deque a létrehozásakor feltöltődik. Lehet üres tuple vagy lista is egy kezdetben üres deque létrehozásához.
A maxlen megadása kötelező, és a deque ehhez a maximális hosszhoz lesz korlátozva. Amint a deque megtelik, minden újonnan hozzáadott elem az ellenkező végéről távolít el elemeket.
Az opcionális flags értéke 1 lehet, ha elemek hozzáadásakor a túlcsordulást szeretnénk ellenőrizni.
A deque objektumok támogatják a
bool,len()használatát, a bejárást, valamint az indexes olvasást és tárolást. Emellett a következő metódusokkal is rendelkeznek:- append(x: Any) None¶
Hozzáadja az x elemet a deque jobb oldalához.
IndexErrorkivételt vált ki, ha a túlcsordulás-ellenőrzés engedélyezve van, és a sorban nincs több hely.
- appendleft(x: Any) None¶
Hozzáadja az x elemet a deque bal oldalához.
IndexErrorkivételt vált ki, ha a túlcsordulás-ellenőrzés engedélyezve van, és a sorban nincs több hely.
- pop() Any¶
Eltávolít és visszaad egy elemet a deque jobb oldaláról.
IndexErrorkivételt vált ki, ha nincs jelen elem.
- popleft() Any¶
Eltávolít és visszaad egy elemet a deque bal oldaláról.
IndexErrorkivételt vált ki, ha nincs jelen elem.
- extend(iterable: Iterable) None¶
Kibővíti a deque-et az iterable összes elemének a deque jobb oldalához fűzésével.
IndexErrorkivételt vált ki, ha a túlcsordulás-ellenőrzés engedélyezve van, és a deque-ben nincs több hely.
- collections.namedtuple(name: str, fields: str | Sequence[str]) type¶
Ez egy előállító függvény, amely egy adott névvel és mezőkészlettel rendelkező új namedtuple típust hoz létre. A namedtuple a tuple egy alosztálya, amely lehetővé teszi, hogy a mezőihez ne csak numerikus index szerint, hanem szimbolikus mezőnevekkel, attribútum-hozzáférési szintaxissal is hozzáférjünk. A fields a mezőneveket megadó sztringek sorozata. A CPython-nal való kompatibilitás érdekében lehet egy szóközökkel elválasztott mezőneveket tartalmazó sztring is (de ez kevésbé hatékony). Használati példa:
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]
A példányok a következő metódust is biztosítják:
- collections._asdict() OrderedDict
Visszaadja a mezőneveket és azok értékeit egy
OrderedDictobjektumként.
- class collections.OrderedDict(*args: Any, **kwargs: Any)¶
A
dicttípus alosztálya, amely megjegyzi és megőrzi a hozzáadott kulcsok sorrendjét. Ugyanazokat a konstruktor-formákat fogadja el, mint adict((key, value)párok bejárható sorozata, egy másik leképezés vagy kulcsszó argumentumok). A rendezett szótár bejárásakor a kulcsok/elemek a hozzáadásuk sorrendjében térnek vissza: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)
Kimenet:
z 1 a 2 w 5 b 3
- popitem() Tuple¶
Eltávolít és visszaad egy (kulcs, érték) párt a szótárból. A párok LIFO sorrendben térnek vissza.
Eltérés a CPython-tól
Az
OrderedDict.popitem()nem támogatja alast=Falseargumentumot, és mindig az utolsó elemet távolítja el és adja vissza, ha van ilyen.Ennek megkerülésére a
pop(<first_key>)használható az első elem eltávolításához:first_key = next(iter(d)) d.pop(first_key)