Python内置函数/方法详解—字典dict
字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。
1、创建字典
在Python中,我们可以使用 {} 或者 dict() 函数来创建字典。
1、使用 {}
- 使用大括号 {} 创建空字典
empty_dict = {}
- 字典的每个键值 key: value 用冒号
:
分割,且每个对之间用逗号,
分割,整个字典包括在花括号{}
中,格式如下:
d = {key1: value1, key2: value2, key3: value3}
注意:dict 作为Python的关键字和内置函数,变量名不建议命名为 dict 。
2、使用dict()
- 使用 dict() 创建空字典
empty_dict = dict()
- 使用 dict() 创建非空字典
notEmpty_dict = dict(name='xm', gender=True, age=21)
在使用 dict() 创建字典时,在小括号
()
内要以 key=value 的形式编写。
1.1 字典键的特性
1、不允许同一个键出现两次。创建时如果同一个键被赋值两次,则后一个值会被记住,如下实例:
repeat_dict = {'name': 'xm', 'gender': True, 'name': 'pink'} print(repeat_dict) # {'name': 'pink', 'gender': True}
2、键必须不可变,所以可以用数字、字符串或元组充当,而用列表就不行,如下实例:
error_dict = {['name']: 'pink', 'age': 21} print(error_dict)
当字典的键使用列表时,会报错
TypeError: unhashable type: 'list'
。
2、访问字典值
2.1 直接访问
如果想要访问某一个键所对应的值,直接将相应的键放入到 []
内,如下实例:
not_dict = {'name': 'xm', 'gender': True, 'age': 21, 178: 65} print(not_dict['name']) print(not_dict[178])
2.2 for循环遍历
循环遍历字典时,返回值是字典的键,但也有返回值的方法。
info_dict = {'name': 'xm', 'gender': True, 'age': 21}
- 逐个打印字典中的所有键名:
for key in info_dict: print(key)
- 逐个打印字典中的所有值:
for key in info_dict: print(info_dict[key])
- 通过使用
value()
方法返回字典的值:
for key in info_dict.values(): print(key)
- 通过使用
items()
方法遍历键和值
for key, value in info_dict.items(): print(key, value)
2.3 检查键是否存在
要确定字典中是否存在指定的键,使用 in 关键字:
info_dict = {'name': 'xm', 'gender': True, 'age': 21} print('name' in info_dict)
如果字典中存在指定的键,则返回 True ,反之返回 False 。
2.4 嵌套字典
字典也可以包含许多字典,这被称为嵌套字典。
- 创建包含三个字典的字典
my_family = { 'child1': { 'name': 'Phoebe Adele', 'birth': 2002 }, 'child2': { 'name': 'Jennifer Katharine', 'birth': 1996 }, 'child3': { 'name': 'Rory John', 'birth': 1999 } }
或者,如果你想嵌套三个已经作为字典存在的字典。
- 创建三个字典,然后创建一个包含其他三个字典的字典
child1 = { 'name': 'Phoebe Adele', 'birth': 2002 } child2 = { 'name': 'Jennifer Katharine', 'birth': 1996 } child3 = { 'name': 'Rory John', 'birth': 1999 } my_family = { 'child1': child1, 'child2': child2, 'child3': child3 }
3、内置函数
3.1 打印输出 print()
1、print()
函数
print() 函数的功能我们已经非常熟悉了,就是打印输出。
info_dict = {'name': 'xm', 'gender': True, 'age': 21} print(info_dict)
输出:
{'name': 'xm', 'gender': True, 'age': 21}
3.2 确定字典项目 len()
2、len()
函数
当我们要确定一个字典有多少项目(键值对),可以使用 len() 函数。
info_dict = {'name': 'xm', 'gender': True, 'age': 21} print(len(info_dict))
输出结果:
3
使用 len() 函数返回的结果,意为有多少个键值对(即多少个
key: value
)。
3.3 返回变量类型 type()
3、type()
函数
使用 type() 函数可以确定一个变量是什么类型(字符串、列表、元组、字典或集合)。
info_dict = {'name': 'xm', 'gender': True, 'age': 21} print(type(info_dict))
输出结果:
<class 'dict'>
- 当对
info_dict = {key: value}
使用 type() 返回变量类型时,会输出<class 'dict'>
,表明这是一个字典。- 当对
info_set = {key, key}
使用 type() 返回变量类型时,会输出<class 'set'>
,表明这是一个集合。
3.4 删除字典 del
4、del
函数
del 关键字的作用是完全删除字典(和下述要说的清空字典并不一样)
info_dict = {'name': 'xm', 'gender': True, 'age': 21} del info_dict print(info_dict)
注意: 当我们使用 del 删除某字典后,再使用 print() 函数打印输出时,会报一个错误
NameError: name 'info_dict' is not defined
,意为该字典并未被创建,注意和清空字典相区分。
3.5 转换成字符串 str()
5、str()
函数
str() 的作用就是将一个字典转换成字符串,以便后续的操作。
info_dict = {'name': 'xm'} info_str = str(info_dict) print(type(info_str)) # <class 'str'>
如果我们对上述转换后的字符串打印输出的话。会返回
{'name': 'xm'}
,但此时这只是一个字符串,并不存在键值对。
4、内置方法
4.1 删除 pop()、popitem()、clear()、del函数
1、pop()
方法
pop() 方法从字典中删除指定的项目,被删除的项目的值是这个 pop() 方法的返回值。
语法
dictionary.pop(key, default)
参数值
参数 | 描述 |
key | 必需。需要删除项目的键名。 |
default | 可选。返回值,假如指定的键不存在。如果未指定此参数,且未找到拥有指定键的项目,则会引发错误。 |
实例
info = {'name': 'pink', 'gender:': True, 'age': 21} print(info)
- 如果
key
存在 - 删除字典中对应的元素
info.pop('name') print(info)
{'gender:': True, 'age': 21}
- 如果
key
不存在 - 返回设置指定的默认值 default
error = info.pop('nickname', 'key不存在') print(error)
key不存在
- 如果
key
不存在且默认值 default 没有指定 - 触发KeyError
异常:KeyError: 'nickname'
2、popitem()
方法
popitem() 方法随机返回并删除字典中的最后一对键和值。如果字典已经为空,却调用了此方法,就报出 KeyError 异常。
语法
dictionary.popitem()
参数值
无参数
实例
info = {'name': 'pink', 'gender:': True, 'age': 21} print(info) info.popitem() print(info)
{'name': 'pink', 'gender:': True, 'age': 21} {'name': 'pink', 'gender:': True}
3、clear()
方法
clear() 方法用于删除字典内所有元素。
语法
dictionary.clear()
参数值
无参数
实例
info = {'name': 'pink'} info.clear() print(info)
{}
4、del
函数
del 函数可用于删除某一特定的键值对。
info = {'name': 'pink', 'gender': True} print(info) del info['name'] print(info)
{'name': 'pink', 'gender': True} {'gender': True}
5、clear()
方法和del
函数区别
clear() 方法:清空字典(即删除字典内所有键值对),执行结束后,使用 print() 打印时,输出
{}
,说明字典还存在,只是一个空字典。del 函数:删除字典(即删除所有键值对以及字典),执行结束后,使用 print() 打印时,会报错
NameError: name 'info' is not defined
,表明该字典未被定义,即已不存在字典。
4.2 复制更新 copy()、update()
1、copy()
方法
copy() 方法返回一个字典的浅复制。
语法
dictionary.copy()
参数值
无参数
实例
info = {'name': 'pink', 'gender': True} co = info.copy() print(co)
{'name': 'pink', 'gender': True}
2、update()
方法
update() 方法把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里。
语法
dictionary.update(iterable)
参数值
参数 | 描述 |
iterable | 具有键值对的字典或可迭代对象,会被插入到字典中。 |
实例
info_1 = {'name': 'pink'} info_2 = {'age': 21} info_1.update(info_2) print(info_1)
{'name': 'pink', 'age': 21}
3、直接更新
可以通过引用键名来更改特定项的值:
info = {'name': 'xm'}
- 若引用的键存在于原字典中,则会修改原键对应的值
info['name'] = 'pink' print(info)
{'name': 'pink'}
- 若引用的键不存在于原字典中,则会直接添加到原字典中
info['gender'] = True print(info)
{'name': 'xm', 'gender': True}
4.3 返回指定键值 fromkeys()
fromkeys() 方法用于创建一个新字典,以序列 keys 中元素做字典的键,value 为字典所有键对应的初始值。
语法
dict.fromkeys(keys, value)
参数值
参数 | 描述 |
keys | 必需。指定新字典键的可迭代对象。 |
value | 可选。所有键的值。默认值是 None。 |
实例
- value 不指定值
keys = {'A', 'B'} this_dict = dict.fromkeys(keys) print(this_dict)
{'A': None, 'B': None}
- value 指定值
keys = {'A', 'B'} this_dict = dict.fromkeys(keys, 10) print(this_dict)
{'A': 10, 'B': 10}
4.4 取值 get()、setdefault()
1、get()
方法
get() 方法返回具有指定键的项目值。
语法
dictionary.get(keyname, value)
参数值
参数 | 描述 |
keyname | 必需。您要从中返回值的项目的键名。 |
value | 可选。如果指定的键不存在,则返回一个值。默认值 None。 |
实例
get()
用法
info = {'name': 'pink', 'age': 21} print(info.get('age')) # 没有设置 Sex,也没有设置默认的值,输出 None print(info.get('sex')) # 没有设置 Salary,输出默认的值 0.0 print(info.get('salary', 0.0))
21 None 0.0
get()
方法 VSdict[key]
访问元素区别
get(key) 方法在 key(键)不在字典中时,可以返回默认值 None 或者设置的默认值。
dict[key] 在 key(键)不在字典中时,会触发 KeyError 异常。
- 嵌套字典使用
my_csdn = {'My_CSDN': {'url': 'https://blog.csdn.net/m0_70885101?spm=1000.2115.3001.5343'}} res = my_csdn.get('My_CSDN', {}).get('url') print(str(res))
https://blog.csdn.net/m0_70885101?spm=1000.2115.3001.5343
2、setfefault()
方法
setdefault() 方法和 get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
语法
dictionary.setdefault(keyname, value)
参数值
参数 | 描述 |
keyname | 必需。您要从中返回值的项目的键名。 |
value | 可选。如果键存在,则此参数无效。如果键不存在,则此值将成为键的值。默认值 None。 |
实例
info = {'name': 'pink', 'age': 21} print(info.setdefault('age', None)) print(info.setdefault('sex', '男')) print(info)
21 男 {'name': 'pink', 'age': 21, 'sex': '男'}
4.5 取键/值 items()、keys()、values()
1、items()
方法
items() 方法以列表返回视图对象,是一个可遍历的 key/value 键值对。
语法
dictionary.items()
参数值
无参数
实例
info = {'name': 'pink', 'age': 21} print(info.items())
dict_items([('name', 'pink'), ('age', 21)])
当字典中的项目值发生改变时,视图对象也会更新。
2、keys()
方法
keys() 方法返回一个视图对象。
语法
dictionary.keys()
参数值
无参数
实例
info = {'name': 'pink', 'age': 21} print(info.keys())
dict_keys(['name', 'age'])
当在字典中添加项目时,视图对象也会更新。
3、values()
方法
values() 方法返回一个视图对象。
语法
dictionary.values()
参数值
无参数
实例
info = {'name': 'pink', 'age': 21} print(info.values())
dict_values(['pink', 21])
当字典中的值改变时,视图对象也会更新.
4、items()
、keys()
和 values
联系
dict.keys() 、dict.values() 和 dict.items() 返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。
视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。
我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。
5、总结
函数 | 描述 |
print() | 打印输出 |
len() | 计算字典键值对 |
type() | 返回变量类型 |
del | 删除字典 |
str() | 以可打印的字符串表示 |
方法 | 描述 |
pop(key[,default]) | 删除字典 key(键)所对应的值,返回被删除的值 |
popitem() | 返回并删除字典中的最后一对键和值 |
clear() | 删除字典内所有元素 |
copy() | 返回一个字典的浅复制 |
update(dict2) | 将字典dict2的键/值对更新到dict里 |
fromkeys() | 创建一个新字典,以序列seq中元素做字典的键,val为所有键对应的初始值 |
get(key, default=None) | 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
items() | 返回包含每个键值对的元组的列表 |
keys() | 返回包含字典键的列表 |
values() | 返回字典中所有值的列表 |
以上就是本文的全部内容啦!如果对您有帮助,麻烦点赞啦!收藏啦!欢迎各位评论区留言!!!
最后编辑于:2022/7/24 18:19