Tento datový typ implementuje tzv. asociativní pole. Položky v kolekci nejsou indexovány pomocí celočíselných indexů, ale pomocí klíčů.
Klíčem může být některý s neměnitelných datových typů. Datový type dict
je
ale měnitelný.
Zapisuje se do složených závorek {}
vždy jako dvojice klíč:hodnota
.
Pokud je při přiřazení použit klíč, který neexistuje vytvoří se.
d = {1: 'ahoj', 'neco': 3.14, 'slovo': 1}
d
{1: 'ahoj', 'neco': 3.14, 'slovo': 1}
d = {}
d['slovo'] = 1
d['neco'] = 3.14
d[1] = 'ahoj'
d
{1: 'ahoj', 'neco': 3.14, 'slovo': 1}
dict()
podporuje operátor příslušnosti in
, počet prvků lze zjistit pomocí funkce len()
a slovníky mezi sebou lze porovnat pomocí operátorů ==
a !=
.d = {1: 'ahoj', 'cislo': 3.14}
len(d)
2
3.14 in d
False
'cislo' in d
True
{1: 'ahoj', 'cislo': 3.14} == {1: 'ahoj', 'cislo': 3.14}
True
{2: 'ahoj', 'cislo': 3.14} == {1: 'ahoj', 'cislo': 3.14}
False
{1: 'ahojjj', 'cislo': 3.14} == {1: 'ahoj', 'cislo': 3.14}
False
in
se prochází klíče, nikoli hodnoty.for k in {1: 'ahojjj', 'cislo': 3.14}:
print(k)
1 cislo
.updte()
nebo pomocí funkce dict()
.d1 = {'a': 123, 'b': 985}
dict(d1, jmeno='Karel', prijmeni='Novak')
{'a': 123, 'b': 985, 'jmeno': 'Karel', 'prijmeni': 'Novak'}
Nebo lze použít operátor **
, který slovník rozbalí.
d1 = {'a': 123, 'b': 985}
d2 = {'jmeno': 'Karel', 'prijmeni':'Novak'}
dict(d1, **d2)
{'a': 123, 'b': 985, 'jmeno': 'Karel', 'prijmeni': 'Novak'}
další možnost:
d1 = {'a': 123, 'b': 985}
d2 = {'jmeno': 'Karel', 'prijmeni':'Novak'}
d = {}
d.update(d1)
d
{'a': 123, 'b': 985}
d.update(d2)
d
{'a': 123, 'b': 985, 'jmeno': 'Karel', 'prijmeni': 'Novak'}
metoda | |
---|---|
d.has_key(k) |
Vrátí True nebo False pokud slovník d obsahuje nebo neobsahuje klíč k . |
d.keys() |
Vrátí pohled tvořený všemi klíči. |
d.values() |
Vrátí pohled tvořený všemi hodnotami. |
d.items() |
Vrátí pohled tvořený všemi dvojicemi (klíč,hodnota) . |
d.get(k) |
Vrátí hodnotu spojenou s klíčem k nebo None pokud klíč neexistuje. |
d.get(k,v) |
Vrátí hodnotu spojenou s klíčem k nebo v pokud klíč neexistuje. |
d.popitem() |
Odstraní náhodnou položku/hodnotu a vrátí ji jako pohled. |
d.pop(k) |
Odstraní položku spojenou s klíčem k a vrátí její hodnotu. |
d.pop(k,v) |
Odstraní položku spojenou s klíčem k a vrátí její hodnotu. Pokud klíč neexistuje vrátí v . |
d={}
d['cislo']=3.14
d['jmeno']='Karel'
d[1]='ahoj'
d[2]='nazdar'
d
{1: 'ahoj', 2: 'nazdar', 'cislo': 3.14, 'jmeno': 'Karel'}
d.values()
dict_values(['Karel', 'ahoj', 'nazdar', 3.14])
d.keys()
dict_keys(['jmeno', 1, 2, 'cislo'])
d.items()
dict_items([('jmeno', 'Karel'), (1, 'ahoj'), (2, 'nazdar'), ('cislo', 3.14)])
for klic, hodnota in d.items():
print(klic, ":", hodnota)
jmeno : Karel 1 : ahoj 2 : nazdar cislo : 3.14
d.get('jmeno')
'Karel'
d.get('HogoFogo')
d.get('HogoFogo',59)
59
d
{1: 'ahoj', 2: 'nazdar', 'cislo': 3.14, 'jmeno': 'Karel'}
d.pop(2)
'nazdar'
d
{1: 'ahoj', 'cislo': 3.14, 'jmeno': 'Karel'}
d.pop(777,'neni tu')
'neni tu'
d.popitem()
('jmeno', 'Karel')
d
{1: 'ahoj', 'cislo': 3.14}
d.popitem()
(1, 'ahoj')