4.2 字典
字典也是 Python 内置的数据结构之一,字典是包含若干“键:值”元素的无序可变序列,字典中的每一个元素都有两个值,它们之间用:隔开,第一个代表键,你可以理解成列表中的 索引,只不过列表中的索引只能是数字,而字典中的键可以是很多东西,字典中的值和列表中的元素值{'张三':18, '李四':19, '王五':18},在字典中,不同元素之间用,隔开,这一点和列表是一样的,列表中的所有元素均放在[]之中,字典中的所有元素放在{}中,不同于列表中的元素索引是唯二的(一个为正一个为负),字典中的键是唯一的,是不可重复的,而字典的值是可以重复的,比如,我们可以设置一个字典用来表示人物和年龄之间的关系:
{'张三':18, '李四':19, '王五':18}
显然,对于不同的人来说,我们是允许他们的年龄是相同的(字典的值相同),但是我们不允许他们的名字相同(字典的键不同),字典(Python)的实现原理其实和我们日常生活中的查字典是类似的,查字典是利用部首或者拼音找到目标字的页数,在字典(Python)中则是利用我们的键(key),去找到我们的值(value)。以上就是简单的认识一下字典,那么接下来,就让我们细致的去了解字典这个数据结构:
4.2.1 字典的创建,删除与遍历
🚩字典的创建:我们可以直接使用赋值运算符 “=”,直接把一个字典常量(用{}
表示字典,字典的元素之间用,
隔开)赋值给变量,如果我们想建立一个字典但是不给它赋任何的值,我们直接让变量 “=” 一个空字典({}
),即:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/11 23:12 # 欢迎大家关注AIoT相关博客~ a = {'张三':18, '李四':19, '王五':18} b = {} print(a) print(b)
我们还可以使用 dict() 函数创造一个字典,我们用=去对应键和值,=左边为键,=右边为值,代码如下:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/11 23:12 # 欢迎大家关注AIoT相关博客~ a = dict(name='张三', age=18, height=177, weight='70kg') b = dict() print(a) print(b)
🚩当一个字典不再使用的时候,我们使用 del 将其删除
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/11 23:12 # 欢迎大家关注AIoT相关博客~ a = dict(name='张三', age=18, height=177, weight='70kg') del a print(a)
🚩字典的遍历默认遍历的是键(key)
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/11 23:12 # 欢迎大家关注AIoT相关博客~ a = dict(name='张三', age=18, height=177, weight='70kg') for item in a: print(item)
如果我们想要遍历字典的值,需要调用 values() 方法:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/11 23:12 # 欢迎大家关注AIoT相关博客~ a = dict(name='张三', age=18, height=177, weight='70kg') for item in a.values(): print(item)
如果我们同时访问键和值的话(即访问字典),需要调用 items() 方法:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/11 23:12 # 欢迎大家关注AIoT相关博客~ a = dict(name='张三', age=18, height=177, weight='70kg') for item in a.items(): print(item)
4.2.2 字典元素的查询与访问
🚩字典中的键和值之间其实可以理解成通过映射的关系相连,如果你学过 C,你可以把键当成特殊的数组下标(这个下标可以是很多的数据类型),如果你学过 C++,你可以把字典理解成 map,对于 Python 初学者而言,我们可以把字典和列表对比,我们通过索引访问列表元素,索引必是整数,对于字典而言,我们用键去访问字典的值,每一个键对应一个值,且字典中的键和列表中的索引最大区别就是,键可以是很多的数据类型,但是索引只能是整数,获取字典中的值我们有两种方法,代码如下:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/11 23:35 # 欢迎大家关注AIoT相关博客~ a = dict(name='张三', age=18, height=177, weight='70kg') print(a['name']) print(a['height'])
如果我们访问的键(key)在我们的列表中不存在的话,会显示 KeyError:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/11 23:35 # 欢迎大家关注AIoT相关博客~ a = dict(name='张三', age=18, height=177, weight='70kg') print(a['location'])
我们还可以使用 get() 方法用来返回我们指定的键(key)所对应的值(value),和上述不存在会显示 KeyError 不同的是,如果我们要访问的键(key)不存在的话,会显示 None(代表无),我们也可以修改当不存在指定键(key)时,get() 方法返回的值,代码如下:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/11 23:35 # 欢迎大家关注AIoT相关博客~ a = dict(name='张三', age=18, height=177, weight='70kg') print(a.get('name')) print(a.get('location')) print(a.get('location', 'China')) # China 为执行get(key)方法时,当key不存在时返回的值
🚩我们还可以通过 in 和 not in 判断一个键(key)是否在字典中存在,如果使用 in,那么存在返回 True,不存在返回 False,如果使用 not in,那么存在返回 False,不存在返回True,代码如下:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/11 23:35 # 欢迎大家关注AIoT相关博客~ a = dict(name='张三', age=18, height=177, weight='70kg') print('name' in a) print('name' not in a)