Menambah elemen ke kamus dan bergabung kamus di Python

Perniagaan

Bahagian ini menerangkan cara menambahkan elemen baru ke kamus (objek jenis perintah) atau mengemas kini nilai elemen yang ada di Python. Ada juga kemungkinan menggabungkan (bergabung, menggabungkan) pelbagai kamus.

  • Tambahkan dan kemas kini elemen ke kamus dengan menentukan kunci.
  • Gabungan (penggabungan) pelbagai kamus: kemas kini (), | pengendali, | = pengendali
  • Tambah atau kemas kini pelbagai elemen: kemas kini (), | = pengendali

Tambahkan dan kemas kini elemen ke kamus dengan menentukan kunci.

Anda boleh menambah / mengemas kini elemen kamus dengan cara berikut.

Objek kamus [kunci] = nilai

Apabila kunci yang tidak ada ditentukan, elemen baru ditambahkan, dan apabila kunci yang ada ditentukan, nilai yang ada diperbarui (ditimpa).

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}

Sekiranya anda tidak mahu mengemas kini nilai kunci yang ada, gunakan kaedah setdefault ().

Gabungkan (menggabungkan) pelbagai kamus: kemas kini (), | pengendali, | = pengendali

update()

Sekiranya objek kamus lain ditentukan sebagai argumen untuk kemas kini kaedah objek kamus (), semua elemennya akan ditambahkan.

Sekiranya kunci bertindih dengan kunci yang ada, ia akan ditimpa dengan nilai kamus yang dinyatakan dalam argumen.

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}

Merupakan kesalahan untuk menentukan beberapa kamus dalam argumen kemas kini ().

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

Seperti yang dijelaskan kemudian, kemas kini () dapat menambahkan elemen baru sebagai argumen kata kunci (kunci = nilai), jadi cukup tambahkan ** ke kamus dan kembangkan setiap elemen sebagai argumen kata kunci dan lulus.

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

Seperti contoh sebelumnya, menggunakan kemas kini () akan mengemas kini objek kamus asal.

Sekiranya anda ingin menghasilkan kamus baru dengan menggabungkan beberapa kamus, gunakan {** d1, ** d2} (dari Python 3.5) atau kata (** d1, ** d2).

Dalam Python 3.9 dan yang lebih baru, juga mungkin untuk membuat kamus baru menggunakan | operator diterangkan seterusnya.

| operator, | = pengendali (Python 3.9 dan lebih baru)

Sejak Python 3.9, adalah mungkin untuk menggabungkan dua kamus menggunakan | pengendali. Apabila dua kamus mempunyai kunci yang sama, nilai di sebelah kanan mempunyai keutamaan.

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}

| Juga memungkinkan untuk menggabungkan beberapa kamus dengan menggunakan rangkaian 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}

+ Seperti kemas kini (), objek di sebelah kiri dikemas kini.

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

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

Tambah atau kemas kini pelbagai elemen: kemas kini (), | = pengendali

update()

Apabila kunci argumen kata kunci = nilai ditentukan dalam kaedah kemas kini (), kunci dan nilai nilai akan ditambah. Sekiranya kunci bertindih dengan kunci yang ada, kunci akan ditimpa dengan nilai yang ditentukan dalam argumen.

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

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

Anda juga boleh menentukan senarai (kunci, nilai) sebagai argumen kaedah kemas kini (). Sekiranya kunci bertindih dengan kunci yang ada, ia akan ditimpa dengan nilai yang ditentukan sebagai argumen.

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

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

Dalam kombinasi dengan fungsi zip (), elemen dapat ditambahkan dari senarai kunci dan daftar nilai.

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}

| = pengendali (Python 3.9 dan lebih baru)

Dengan operator | =, senarai (kunci, nilai) dapat ditentukan di sebelah kanan.

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

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

Perhatikan bahawa menentukan senarai dengan | pengendali akan menyebabkan kesilapan. Hanya operasi kamus ke kamus yang disokong.

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