Lägga till element i en ordlista och gå med i ordböcker i Python

Företag

Det här avsnittet förklarar hur man lägger till nya element i en ordlista (dikt-typ) eller uppdaterar värdet på ett befintligt element i Python. Det är också möjligt att sammanfoga (sammanfoga, slå samman) flera ordböcker.

  • Lägg till och uppdatera element i ordboken genom att ange tangenter.
  • Sammankoppling (sammanslagning) av flera ordböcker: uppdatering (), | operatör, | = operatör
  • Lägg till eller uppdatera flera element: update (), | = operator

Lägg till och uppdatera element i ordboken genom att ange tangenter.

Du kan lägga till / uppdatera ordbokselement på följande sätt.

Ordbokobjekt [nyckel] = värde

När en icke-existerande nyckel anges, läggs ett nytt element till och när en befintlig nyckel anges, uppdateras det befintliga värdet (skrivs över).

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}

Om du inte vill uppdatera värdet på en nyckel som finns använder du metoden setdefault ().

Sammankoppla (slå samman) flera ordböcker: uppdatera (), | operatör, | = operatör

update()

Om ett annat ordboksobjekt anges som ett argument för ordboksobjektets metoduppdatering () kommer alla dess element att läggas till.

Om nyckeln överlappar en befintlig nyckel skrivs den över med värdet på ordlistan som anges i argumentet.

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}

Det är ett fel att specificera flera ordböcker i argumentet 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

Som förklaras senare kan uppdatering () lägga till nya element som nyckelordargument (key = value), så lägg bara till ** i ordboken och expandera varje element som ett nyckelordsargument och skicka det.

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

Som i de föregående exemplen uppdateras det ursprungliga ordboksobjektet med hjälp av uppdatering ().

Om du vill skapa en ny ordbok genom att slå samman flera ordböcker, använd {** d1, ** d2} (från Python 3.5) eller dict (** d1, ** d2).

I Python 3.9 och senare är det också möjligt att skapa en ny ordlista med | operatören som beskrivs härnäst.

| operator, | = operator (Python 3.9 och senare)

Sedan Python 3.9 är det möjligt att slå samman två ordböcker med | operatör. När två ordböcker har samma tangent har värdet till höger prioritet.

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}

| Det är också möjligt att kombinera flera ordböcker med hjälp av en serie operatörer.

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}

+ Som med uppdatering () uppdateras objektet på vänster sida.

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

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

Lägg till eller uppdatera flera element: update (), | = operator

update()

När nyckelordets argument key = value anges i uppdateringsmetoden () kommer nyckelnyckeln och värdet att läggas till. Om nyckeln överlappar en befintlig nyckel skrivs den över med det värde som anges i argumentet.

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

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

Det är också möjligt att ange en lista med (nyckel, värde) som ett argument för uppdateringsmetoden (). Om nyckeln överlappar en befintlig nyckel skrivs den över med det värde som anges som argument.

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

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

I kombination med zip () -funktionen kan element läggas till från en lista med tangenter och en lista med värden.

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}

| = operatör (Python 3.9 och senare)

Med operatören | = kan en lista med (nyckel, värde) anges på höger sida.

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

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

Observera att när du anger en lista med | kommer att leda till ett fel. Endast ordbok-till-ordbok-funktioner stöds.

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