Pridávanie prvkov do slovníka a spájanie slovníkov v Pythone

obchodné

Táto časť vysvetľuje, ako pridať nové prvky do slovníka (objekt typu dict) alebo ako aktualizovať hodnotu existujúceho prvku v Pythone. Je tiež možné zreťaziť (spojiť, zlúčiť) viac slovníkov.

  • Pridajte a aktualizujte prvky do slovníka zadaním klávesov.
  • Zreťazenie (zlúčenie) viacerých slovníkov: update (), | operátor, | = operátor
  • Pridajte alebo aktualizujte viac prvkov: update (), | = operátor

Pridajte a aktualizujte prvky do slovníka zadaním klávesov.

Prvky slovníka môžete pridať / aktualizovať nasledujúcim spôsobom.

Objekt slovníka [kľúč] = hodnota

Keď je zadaný neexistujúci kľúč, je pridaný nový prvok a keď je zadaný existujúci kľúč, existujúca hodnota sa aktualizuje (prepíše).

d = {'k1': 1, 'k2': 2}

d['k3'] = 3
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}

d['k1'] = 100
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3}

Ak nechcete aktualizovať hodnotu existujúceho kľúča, použite metódu setdefault ().

Zreťaziť (zlúčiť) viac slovníkov: update (), | operátor, | = operátor

update()

Ak je zadaný iný objekt slovníka ako argument pre metódu update () objektu slovníka, budú pridané všetky jeho prvky.

Ak sa kľúč prekrýva s existujúcim kľúčom, bude prepísaný hodnotou slovníka uvedenou v argumente.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}

d1.update(d2)
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Je chybou určiť viac slovníkov v argumente update ().

d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}

# d1.update(d2, d3)
# TypeError: update expected at most 1 arguments, got 2

Ako je vysvetlené neskôr, nástroj update () môže pridávať nové prvky ako argumenty kľúčových slov (key = value), takže stačí pridať ** do slovníka a každý prvok rozšíriť ako argument kľúčového slova a odovzdať ho.

d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}

Rovnako ako v predchádzajúcich príkladoch sa pomocou aktualizácie () aktualizuje pôvodný objekt slovníka.

Ak chcete vygenerovať nový slovník zlúčením viacerých slovníkov, použite {** d1, ** d2} (z Pythonu 3.5) alebo dict (** d1, ** d2).

V Pythone 3.9 a novších je tiež možné vytvoriť nový slovník pomocou | operátor opísaný ďalej.

| operátor, | = operátor (Python 3.9 a novší)

Od verzie Python 3.9 je možné zlúčiť dva slovníky pomocou | operátor. Ak majú dva slovníky rovnaký kľúč, má priorita hodnota vpravo.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}

print(d1 | d2)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

print(d2 | d1)
# {'k1': 1, 'k3': 3, 'k4': 4, 'k2': 2}

| Je tiež možné kombinovať viac slovníkov pomocou série operátorov.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}

print(d1 | d2 | d3)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}

+ Rovnako ako v prípade aktualizácie () sa aktualizuje objekt na ľavej strane.

d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}

d1 |= d2
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Pridajte alebo aktualizujte viac prvkov: update (), | = operátor

update()

Keď je v metóde update () zadaný argument kľúčového slova key = value, pridá sa kľúč a hodnota kľúča. Ak sa kľúč prekrýva s existujúcim kľúčom, bude prepísaný hodnotou zadanou v argumente.

d = {'k1': 1, 'k2': 2}

d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Je tiež možné určiť zoznam (kľúč, hodnota) ako argument metódy update (). Ak sa kľúč prekrýva s existujúcim kľúčom, bude prepísaný hodnotou zadanou ako argument.

d = {'k1': 1, 'k2': 2}

d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

V kombinácii s funkciou zip () je možné pridávať prvky zo zoznamu klávesov a zo zoznamu hodnôt.

d = {'k1': 1, 'k2': 2}

keys = ['k1', 'k3', 'k4']
values = [100, 3, 4]

d.update(zip(keys, values))
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

| = operátor (Python 3.9 a novší)

Pomocou operátora | = je možné zadať zoznam (kľúč, hodnota) na pravej strane.

d = {'k1': 1, 'k2': 2}

d |= [('k1', 100), ('k3', 3), ('k4', 4)]
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}

Upozorňujeme, že zadanie zoznamu pomocou | operátor bude mať za následok chybu. Podporované sú iba operácie medzi slovníkmi.

# print(d | [('k1', 100), ('k3', 3), ('k4', 4)])
# TypeError: unsupported operand type(s) for |: 'dict' and 'list'
Copied title and URL