Даданне элементаў у слоўнік і далучэнне да слоўнікаў у Python

Бізнэс

У гэтым раздзеле тлумачыцца, як дадаць новыя элементы ў слоўнік (аб’ект тыпу dict) альбо абнавіць значэнне існуючага элемента ў Python. Таксама можна аб’яднаць (аб’яднаць, аб’яднаць) некалькі слоўнікаў.

  • Дадайце і абнаўляйце элементы ў слоўнік, паказваючы ключы.
  • Канкатэнацыя (аб’яднанне) некалькіх слоўнікаў: update (), | аператар, | = аператар
  • Даданне альбо абнаўленне некалькіх элементаў: update (), | = аператар

Дадайце і абнаўляйце элементы ў слоўнік, паказваючы ключы.

Вы можаце дадаць / абнавіць элементы слоўніка наступным чынам.

Аб'ект слоўніка [ключ] = значэнне

Калі паказаны неіснуючы ключ, дадаецца новы элемент, а калі ўказваецца існуючы ключ, існуючае значэнне абнаўляецца (перазапісваецца).

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}

Калі вы не хочаце абнаўляць значэнне ключа, які існуе, выкарыстоўвайце метад setdefault ().

Злучыць (аб’яднаць) некалькі слоўнікаў: update (), | аператар, | = аператар

update()

Калі іншы аб’ект слоўніка ўказаны ў якасці аргумента метаду update аб’екта слоўніка (), будуць дададзены ўсе яго элементы.

Калі ключ перакрываецца з існуючым ключом, ён будзе перазапісаны значэннем слоўніка, указаным у аргуменце.

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}

Памылка ўказання некалькіх слоўнікаў у аргуменце 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

Як тлумачылася пазней, update () можа дадаваць новыя элементы ў якасці аргументаў ключавых слоў (ключ = значэнне), таму проста дадайце ** у слоўнік і пашырыце кожны элемент як аргумент ключавога слова і перадайце яго.

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

Як і ў папярэдніх прыкладах, выкарыстанне update () абнавіць зыходны аб’ект слоўніка.

Калі вы хочаце стварыць новы слоўнік шляхам аб’яднання некалькіх слоўнікаў, выкарыстоўвайце {** d1, ** d2} (з Python 3.5) або dict (** d1, ** d2).

У Python 3.9 і больш позняй версіі таксама можна стварыць новы слоўнік з дапамогай | аператар, апісаны далей.

| аператар, | = аператар (Python 3.9 і вышэй)

З Python 3.9 можна аб’яднаць два слоўнікі, выкарыстоўваючы | аператар. Калі два слоўнікі маюць адзін і той жа ключ, значэнне справа мае прыярытэт.

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}

| Таксама можна аб’яднаць некалькі слоўнікаў, выкарыстоўваючы шэраг аператараў.

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}

+ Як і пры абнаўленні (), аб’ект злева абнаўляецца.

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

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

Даданне або абнаўленне некалькіх элементаў: update (), | = аператар

update()

Калі ў метадзе update () вызначана аргумент ключавога слова ключ = значэнне, будуць дададзены ключ і значэнне ключа. Калі ключ перакрываецца з існуючым ключом, ён будзе перазапісаны значэннем, указаным у аргуменце.

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

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

Таксама можна задаць спіс (ключ, значэнне) як аргумент метаду update (). Калі ключ перакрываецца з існуючым ключом, ён будзе перазапісаны значэннем, указаным у якасці аргумента.

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

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

У спалучэнні з функцыяй zip () элементы могуць быць дададзены са спісу ключоў і спісу значэнняў.

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}

| = аператар (Python 3.9 і вышэй)

З дапамогай аператара | = можна ўказаць спіс (ключ, значэнне) з правага боку.

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

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

Звярніце ўвагу, што ўказанне спіса з | аператар прывядзе да памылкі. Падтрымліваюцца толькі аперацыі са слоўніка ў слоўнік.

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