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'