Tilføjelse af elementer til en ordbog og sammenføjning af ordbøger i Python

Forretning

Dette afsnit forklarer, hvordan du tilføjer nye elementer til en ordbog (diktype-objekt) eller opdaterer værdien af ​​et eksisterende element i Python. Det er også muligt at sammenkæde (slutte, flette) flere ordbøger.

  • Tilføj og opdater elementer til ordbogen ved at angive taster.
  • Sammenkædning (sammensmeltning) af flere ordbøger: opdatering (), | operatør, | = operatør
  • Tilføj eller opdater flere elementer: opdater (), | = operator

Tilføj og opdater elementer til ordbogen ved at angive taster.

Du kan tilføje / opdatere ordbogselementer på følgende måde.

Ordbogobjekt [nøgle] = værdi

Når en ikke-eksisterende nøgle er specificeret, tilføjes et nyt element, og når en eksisterende nøgle er angivet, opdateres den eksisterende værdi (overskrives).

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}

Hvis du ikke vil opdatere værdien af ​​en nøgle, der findes, skal du bruge metoden setdefault ().

Sammenkæd (flet) flere ordbøger: opdatering (), | operatør, | = operatør

update()

Hvis et andet ordbogobjekt er angivet som et argument til ordbogobjektets metodeopdatering (), tilføjes alle dets elementer.

Hvis nøglen overlapper en eksisterende nøgle, overskrives den med værdien af ​​den ordbog, der er angivet 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 er en fejl at angive flere ordbøger 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 forklaret senere kan opdatering () tilføje nye elementer som søgeordsargumenter (nøgle = værdi), så bare tilføj ** til ordbogen og udvid hvert element som et søgeordsargument, og send det.

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

Som i de foregående eksempler opdaterer det oprindelige ordbogobjekt ved hjælp af opdatering ().

Hvis du vil generere en ny ordbog ved at flette flere ordbøger, skal du bruge {** d1, ** d2} (fra Python 3.5) eller dict (** d1, ** d2).

I Python 3.9 og senere er det også muligt at oprette en ny ordbog ved hjælp af | operatør beskrevet næste.

| operator, | = operator (Python 3.9 og nyere)

Siden Python 3.9 er det muligt at flette to ordbøger ved hjælp af | operatør. Når to ordbøger har den samme nøgle, har værdien til højre 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 er også muligt at kombinere flere ordbøger ved hjælp af en række operatorer.

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 opdatering () opdateres objektet i venstre side.

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

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

Tilføj eller opdater flere elementer: opdater (), | = operator

update()

Når nøgleordsargumentnøgle = værdi er specificeret i opdateringsmetoden (), tilføjes nøglenøgle og værdi. Hvis nøglen overlapper med en eksisterende nøgle, overskrives den med den værdi, der er angivet 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 er også muligt at specificere en liste over (nøgle, værdi) som et argument for opdateringsmetoden (). Hvis nøglen overlapper med en eksisterende nøgle, overskrives den med den værdi, der er angivet som argumentet.

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 elementer tilføjes fra en liste over taster og en liste over værdier.

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}

| = operator (Python 3.9 og nyere)

Med operatoren | = kan der angives en liste over (nøgle, værdi) på højre side.

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

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

Bemærk, at angivelse af en liste med | operatøren vil resultere i en fejl. Kun ordbog-til-ordbog-handlinger understøttes.

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