2.12.4 删除

dict元素的删除有两种方法,一种是用del函数,一种是用pop方法。

用del函数,我们可以删除指定的dict中的元素。


airports = {
    "PVG": "上海浦东国际机场",
    "PEK": "北京首都国际机场"
}

del(airports['PVG'])
print(airports)

执行结果如下:


{'PEK': '北京首都国际机场'}

要留意的是,如果指定的key不存在,del函数会执行出错。


airports = {
    "PVG": "上海浦东国际机场",
    "PEK": "北京首都国际机场"
}

del(airports['CAN'])

执行结果如下:


KeyError: 'CAN'

要避免这种类型的错误,我们可以加上如下判断条件。


airports = {
    "PVG": "上海浦东国际机场",
    "PEK": "北京首都国际机场"
}

airport_code = 'CAN'
if airport_code in airports:
    del(airports[airport_code])

删除dict元素的另外一种方式是通过dict类型对象的pop方法。


airports = {
    "PVG": "上海浦东国际机场",
    "PEK": "北京首都国际机场"
}

airport_code = 'CAN'
if airport_code in airports:
    airports.pop(airport_code)

与del函数有所不同的是,用pop方法删除元素的时候,被删除的元素的value会被方法返回。


airports = {
    "PVG": "上海浦东国际机场",
    "PEK": "北京首都国际机场"
}

airport_code = 'PVG'
airport_name = airports.pop(airport_code)
print(airport_name)

执行结果如下:


上海浦东国际机场

dict还支持clear方法,用于把所有元素清除。


airports = {
    "PVG": "上海浦东国际机场",
    "SZX": "深圳宝安国际机场"
}

print(airports)
airports.clear()
print(airports)

执行结果如下:


{'PVG': '上海浦东国际机场', 'SZX': '深圳宝安国际机场'}
{}

要清空dict的所有元素,我们也可以通过如下简单的赋值完成。


airports = {
    "PVG": "上海浦东国际机场",
    "SZX": "深圳宝安国际机场"
}

print(airports)
airports = {}
print(airports)

执行结果如下:


{'PVG': '上海浦东国际机场', 'SZX': '深圳宝安国际机场'}
{}