Python字典之查询访问([]、get)和删除元素的四种方法详解

获取字典的值value

在 Python 中,字典中的元素是无序的,所以无法用下标来获取值。而字典中的键是唯一且不可变的,所以字典是根据键 key 查找 value 所在的位置。先通过哈希函数(hash(key))计算出 key 的存储位置,找到对应的 value。就像平时查字典一样,先根据部首或者拼音找到汉字对应的页码。

1、dict_name[key] —-> 根据key查找value

语法格式:dict_name[key]

根据 key 查找 Value。如果查找的 key 不存在,就会抛出异常 KeyError。

score_dict = {'语文': 95,'数学': 100,'英语': 80}

print(score_dict['语文'])

print(score_dict['数学'])

print(score_dict['英语'])
图片[1]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

如果要查找的 key 不存在,就会抛出 KeyError。

score_dict = {'语文': 95,'数学': 100,'英语': 80}

# 如果查找的key键不存在则抛出异常
print(score_dict['地理']) # KeyError: '地理'
图片[2]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

2、get(key)方法 —–> 返回指定键(key)对应的值(value)

用于返回指定键(key)对应的值(value)。如果指定的 key 不存在,也不会抛出异常而是返回 None,我们可以通过参数来设置 key 不存在时返回的默认值。

语法格式:dict.get(key[, value])

参数说明:

key:要查找的键 key。

value:可选参数,用于设置指定键不存在时返回的值(也可是用于提示用户该值不存在,比喻说:score_dict.get(‘化学’,’该键不存在’))。

返回值:返回指定键的值,如果指定的键不存在,返回 None,或者通过参数设置默认值。

score_dict = {'语文': 95,'数学': 100,'英语': 80}

print(score_dict.get('数学')) # 100

# 如果查找的key不存在,则返回None
print(score_dict.get('化学')) # None

# 可以通过参数设置查找指定key不存在时返回的默认值
print(score_dict.get('化学',999)) # 999

print(score_dict.get('化学','该键不存在')) # 该键不存在
图片[3]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

3、setdefault() —–> 获取指定key对应的value值

获取指定 key 对应的 value 值,如果指定的 key 不存在时,会默认给 key 设置 value 为 None,也可以自己设置这个默认值。

语法格式:dict_name.setdefault(key, default)

参数说明:

key:要查找的键 key。

default:可选参数,key不存在是返回的值,默认为 None,可以自己设置值。

score_dict = {'语文': 95, '数学': 100, '英语': 80, '地理': 99}

# 指定的key存在,则返回对应的value
result = score_dict.setdefault('数学')
print(f'键在字典中对应的值是:{result}')  # 100

print(score_dict)

# 指定key不存在时,setdefault会先给这个key设置一个默认的value,默认是None,也可以自己设置,再将这个键值对插入字典中
print(score_dict.setdefault('化学',999))

print(score_dict)   # {'语文': 95, '数学': 100, '英语': 80, '地理': 99, '化学': 999}
图片[4]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

dict_name[key] 和 get(key) 和 setdefault(key) 获取值的区别:

dict_name[key] :如果指定的 key (键)不存在的话,会抛出异常 KeyError。

get(key) :如果指定的 key (键)不存在的话,返回默认值 None,或者自己通过参数设置的默认值。

setdefault(key):如果指定的 key (键)不存在的话,返回默认值 None,或者自己通过参数设置的默认值,并将这个键值对插入这个字典中。

4、判断指定的key是否存在

in:指定的key在字典中存在则返回True,否则返回False。

not in:指定的key在字典中不存在则返回True,否则返回False。

score_dict = {'语文': 95,'数学': 100,'英语': 80}

print('英语' in score_dict)   # True
print('英语' not in score_dict)   # False
图片[5]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

删除元素的四种方式

1、pop() —–> 删除指定的键值对

获取指定 key 对应的值,并删除这个键值对。

语法格式: pop(key[, default])

参数说明:

key:要删除的键。

default:可选参数,当 key 不存在时返回的值。

返回值:如果指定 key 存在,则返回被删除的字典中 key 对应的元素;如果指定的 key 不存在,则返回设置的默认值 default;如果 key 不存在,且 default 也没指定,则抛出异常 KeyError。

a、指定的 key 存在,则获取 key 对应的值,并删除这个键值对。

score_dict = {'语文': 95,'数学': 100,'英语': 80}

result = score_dict.pop('语文')

print(f'删除的元素是{result}')
print('pop后的字典:',score_dict)   # {'数学': 100, '英语': 80}
图片[6]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

b、如果指定的 key 不存在,则返回设置的默认值 default;如果 key 不存在,且 default 也没指定,则抛出异常 KeyError。

score_dict = {'语文': 95,'数学': 100,'英语': 80}

# 如果指定的 key 不存在,则返回设置的默认值(可以是字符串,也可以是整数)
str = score_dict.pop('化学','该键不存在')
print(str)

# 若指定key不存在,且没有设置返回的默认值,则抛出异常KeyError
score_dict.pop('化学')    # KeyError: '化学'
图片[7]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

2、popitem() —–> 删除最后插入的那个键值对

删除最后插入的那个键值对。

语法格式:dict_name.popitem()

返回值:返回删除的那个键值对组成的元组。

score_dict = {'语文': 95,'数学': 100,'英语': 80}

result = score_dict.popitem()

print(f'删除的键值对是:{result}')

print('删除键值对后的字典:',score_dict)   # {'语文': 95, '数学': 100}
图片[8]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

如果调用这个方法的字典为空,会抛出异常 KeyError。

score_dict = {}

score_dict.popitem()
图片[9]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

3、clear() —–> 删除字典中所有键值对

清空字典中所有的键值对,只剩下一个空字典对象。

语法格式:dict_name.clear()

返回值:无参,无返回值。

score_dict = {'语文': 95,'数学': 100,'英语': 80}

print(f'clear前的字典:{score_dict}')

score_dict.clear()

print(f'clear前的字典:{score_dict}')
图片[10]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

4、del关键字

删除指定key的键值对,或者删除整个字典。

语法格式:

del dict_name[key] —–> 删除指定 key (键)的键值对,如果指定的 Key 不存在,则抛出异常 KeyError。

del dict_name —–> 删除这个字典,包括字典对象。

score_dict = {'语文': 95,'数学': 100,'英语': 80}

print(f'del前的字典:{score_dict}')

# 删除键名为'语文'的那个键值对
del score_dict['语文']

print(f'del删除指定key后的字典:{score_dict}')   # {'数学': 100, '英语': 80}
图片[11]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog

del 删除整个字典,包括字典对象。

score_dict = {'语文': 95,'数学': 100,'英语': 80}

print(f'del前的字典:{score_dict}')

# 删除整个字典,包括字典对象
del score_dict
print(score_dict)   # NameError: name 'score_dict' is not defined
图片[12]-Python字典之查询访问([]、get)和删除元素的四种方法详解-尤尤'blog
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容