Pagdaragdag ng mga elemento sa isang diksyunaryo at pagsali sa mga dictionary sa Python

Negosyo

Ipinapaliwanag ng seksyong ito kung paano magdagdag ng mga bagong elemento sa isang diksyunaryo (object ng uri ng dikta) o i-update ang halaga ng isang mayroon nang elemento sa Python. Posible rin na pagsamahin (sumali, pagsamahin) ang maraming mga diksyunaryo.

  • Magdagdag at mag-update ng mga elemento sa diksyunaryo sa pamamagitan ng pagtukoy ng mga key.
  • Pagtatapos (pagsasama) ng maraming mga diksyunaryo: pag-update (), | operator, | = operator
  • Magdagdag o mag-update ng maraming elemento: i-update (), | = operator

Magdagdag at mag-update ng mga elemento sa diksyunaryo sa pamamagitan ng pagtukoy ng mga key.

Maaari kang magdagdag / mag-update ng mga elemento ng diksyonaryo sa sumusunod na paraan.

Object ng diksyonaryo [key] = halaga

Kapag tinukoy ang isang hindi umiiral na key, ang isang bagong elemento ay naidagdag, at kapag ang isang umiiral na key ay tinukoy, ang umiiral na halaga ay na-update (na-overwrite).

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}

Kung hindi mo nais na i-update ang halaga ng isang susi na mayroon, gamitin ang setdefault () na pamamaraan.

Pinagsama (pagsamahin) ang maraming mga diksyunaryo: pag-update (), | operator, | = operator

update()

Kung ang ibang object ng diksyonaryo ay tinukoy bilang isang argument sa pag-update ng pamamaraan ng object ng diksyunaryo (), ang lahat ng mga elemento ay idaragdag.

Kung ang susi ay nag-o-overlap sa isang umiiral na key, ito ay mapapatungan ng halaga ng diksyunaryo na tinukoy sa argument.

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}

Ito ay isang error upang tukuyin ang maraming mga dictionaryo sa argumentong pag-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

Tulad ng ipinaliwanag sa paglaon, ang pag-update () ay maaaring magdagdag ng mga bagong elemento bilang mga argumento ng keyword (key = halaga), kaya idagdag lamang ** sa diksyunaryo at palawakin ang bawat elemento bilang isang argument ng keyword at ipasa ito.

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

Tulad ng sa mga nakaraang halimbawa, ang pag-update () ay mag-a-update ng orihinal na object ng diksyunaryo.

Kung nais mong makabuo ng isang bagong diksyunaryo sa pamamagitan ng pagsasama ng maraming mga diksyunaryo, gamitin ang {** d1, ** d2} (mula sa Python 3.5) o dict (** d1, ** d2).

Sa Python 3.9 at mas bago, posible ring lumikha ng isang bagong diksyunaryo gamit ang | susunod na inilarawan ng operator.

| operator, | = operator (Python 3.9 at mas bago)

Dahil sa Python 3.9, posible na pagsamahin ang dalawang mga diksyunaryo gamit ang | operator Kapag ang dalawang mga diksyunaryo ay may parehong key, ang halaga sa kanan ay may priyoridad.

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}

| Posible rin na pagsamahin ang maraming mga diksyunaryo sa pamamagitan ng paggamit ng isang serye ng mga operator.

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}

+ Tulad ng pag-update (), ang bagay sa kaliwang bahagi ay na-update.

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

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

Magdagdag o mag-update ng maraming elemento: i-update (), | = operator

update()

Kapag ang keyword argument key = halaga ay tinukoy sa pag-update () na pamamaraan, ang key key at halaga ng halaga ay maidaragdag. Kung ang susi ay nag-o-overlap sa isang umiiral na key, ito ay mapapatungan ng halagang tinukoy sa argument.

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

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

Posible ring tukuyin ang isang listahan ng (key, halaga) bilang isang argument sa pag-update () na pamamaraan. Kung ang susi ay nag-o-overlap sa isang umiiral na key, ito ay mapapatungan ng halagang tinukoy bilang argument.

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

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

Kasabay ng pagpapaandar ng zip (), ang mga elemento ay maaaring idagdag mula sa isang listahan ng mga susi at isang listahan ng mga halaga.

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 at mas bago)

Sa operator na | =, ang isang listahan ng (key, halaga) ay maaaring tukuyin sa kanang bahagi.

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

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

Tandaan na ang pagtukoy ng isang listahan sa | magreresulta sa isang error ang operator. Ang mga pagpapatakbo lamang ng diksyonaryo-sa-diksyonaryo ang sinusuportahan.

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