本節說明如何在字典中添加新元素(字典類型對象)或更新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()可以將新元素添加為關鍵字參數(key = value),因此只需在字典中添加**並將每個元素擴展為關鍵字參數並將其傳遞即可。
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}
+與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}
添加或更新多個元素:update(),| =運算符
update()
在update()方法中指定關鍵字參數key = value時,將添加鍵和值。如果該鍵與現有鍵重疊,則會被參數中指定的值覆蓋。
d = {'k1': 1, 'k2': 2}
d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
也可以指定(key,value)的列表作為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'