Elemek hozzáadása egy szótárhoz és szótárak összekapcsolása a Pythonban

Üzleti

Ez a szakasz elmagyarázza, hogyan adhatunk új elemeket egy szótárhoz (dict típusú objektum), vagy hogyan frissíthetjük a Python meglévő elemének értékét. Több szótár összefűzése (összekapcsolása, egyesítése) is lehetséges.

  • Elemek hozzáadása és frissítése a szótárhoz a kulcsok megadásával.
  • Több szótár összefűzése (összevonása): frissítés (), | operátor, | = operátor
  • Több elem hozzáadása vagy frissítése: update (), | = operátor

Elemek hozzáadása és frissítése a szótárhoz a kulcsok megadásával.

A szótárelemeket a következő módon adhatja hozzá / frissítheti.

Szótár objektum [kulcs] = érték

Ha nem létező kulcsot adunk meg, akkor egy új elem kerül hozzáadásra, és ha megadunk egy meglévő kulcsot, akkor a meglévő érték frissül (felülíródik).

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}

Ha nem szeretné frissíteni egy létező kulcs értékét, használja a setdefault () metódust.

Több szótár összefűzése (egyesítése): frissítés (), | operátor, | = operátor

update()

Ha egy másik szótárobjektum argumentumként van megadva a szótárobjektum metódusfrissítésében (), akkor annak minden eleme hozzáadódik.

Ha a kulcs átfedésben van egy meglévő kulccsal, akkor azt felülírják az argumentumban megadott szótár értékével.

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}

Hiba egy több szótár megadása az update () argumentumban.

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

Amint később kifejtettük, az update () új elemeket adhat kulcsszó argumentumokként (kulcs = érték), ezért csak vegye fel a ** szótárt a szótárba, és minden elemet bővítse ki kulcsszó argumentumként, és adja át.

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

Az előző példákhoz hasonlóan az update () használatával frissül az eredeti szótár objektum.

Ha több szótár összevonásával szeretne új szótárat létrehozni, használja a {** d1, ** d2} (a Python 3.5-ből) vagy a dict (** d1, ** d2) szót.

A Python 3.9 és újabb verzióiban új szótár létrehozása is lehetséges a | kezelő leírt legközelebb.

| operátor, | = operátor (Python 3.9 és újabb)

A Python 3.9 óta lehetséges két szótár egyesítése a | operátor. Ha két szótárnak ugyanaz a kulcsa, akkor a jobb oldali értéknek van prioritása.

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}

| Lehetőség van több szótár kombinálására is operátorok sorozatával.

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}

+ A frissítéshez () hasonlóan a bal oldalon lévő objektum is frissül.

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

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

Több elem hozzáadása vagy frissítése: update (), | = operátor

update()

Ha az update () metódusban meg van adva a kulcsszó argumentum kulcs = érték, akkor hozzáadódik a kulcs kulcs és az érték. Ha a kulcs átfedésben van egy meglévő kulccsal, akkor azt felülírják az argumentumban megadott értékkel.

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

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

Lehetőség van a (kulcs, érték) listájának megadására is a frissítés () metódus argumentumaként. Ha a kulcs átfedésben van egy meglévő kulccsal, akkor azt felülírják az argumentumként megadott értékkel.

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

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

A zip () függvénnyel kombinálva elemek hozzáadhatók a kulcsok listájából és az értékek listájából.

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 és újabb)

A | = operátorral a (kulcs, érték) listája megadható a jobb oldalon.

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

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

Vegye figyelembe, hogy a | -val listát kell megadni operátor hibát eredményez. Csak a szótár-szótár műveletek támogatottak.

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