python基础专栏12-python基础篇-复合数据类型-字典
前言
曾经在儿时小学阶段学习语文时,字典在学习过程中起到了非常的作用,也就是在那时候,我们学会了字典的使用方法,通过拼音或部首,找到汉字所在的页码,通过页码就可以找到汉字的释义。
在python当中,字典是一类非常重要的复合数据类型,它的数据元素格式和之前学习的列表、元组和集合不同,字典中的元素是由两部分组成:键(key):值(value)对。字典是一种映射类型的数据结构。
字典中的数据是按照键(key)进行索引存储和获取的。
字典概念定义
字典是一个无序、可变和有索引的复合数据结构体,里面可以存放任何数据类型的数据。
字典中的数据元素格式为:key:value,键和值之间用冒号连接,数据元素之间是通过逗号分隔,和列表、元组和集合一样。
字典的创建
方式一:直接用界定符赋值的方式创建
dict1={"name":"张三","age":20,"sex":"男","address":"济宁"}
print("dict1的数据类型:",type(dict1))
print("dict1的值为:",dict1)
'''
************执行结果*****************
dict1的数据类型: <class 'dict'>
dict1的值为: {'name': '张三', 'age': 20, 'sex': '男', 'address': '济宁'}
'''
方式二:通过dict函数创建。
通过此函数生成时,需要按照关键字参数(后续会在函数章节进行详细讲解什么是关键字传参)的方式进行传参。
dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("dict1的数据类型:",type(dict1))
print("dict1的值为:",dict1)
'''
*****************执行结果******************
dict1的数据类型: <class 'dict'>
dict1的值为: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
'''
字典的特点
1、字典的元素的值可以是任何类型,但是键只能是不可变类型的数据,比如数值、字符串、元组类型。
2、字典中键具有唯一性,不能重复。
3、字典是通过键获取值。
字典支持的方法
len(dict1)
此方法返回字典中元素的个数。
dict2=dict(name="张三",age=21,sex="男",address="济宁")
print(len(dict2))
'''
****************结果输出******************
4
'''
str(dict1)
此方法返回字典的字符串表示。
dict2=dict(name="张三",age=21,sex="男",address="济宁")
print(str(dict2))
'''
*******************结果输出*****************
{'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
'''
字典上的操作
字典同样是用来进行存储数据的容器,并且是可变类型,所以它支持增删改查的操作。
添加数据
方式①:
按键赋值,添加新元素(键不存在的情况)。
如果键存在的话,则是更新数据。
dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1["major"]="计算机科学与技术"
print("添加数据后:",dict1)
'''
****************执行结果***********************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
添加数据后: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁', 'major': '计算机科学与技术'}
'''
方式②
update()方法,通过关键字参数,关键字在字典中不存在的话,则是增加数据,否则是修改数据。
dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1.update(hobby="跑步")
print("添加数据后:",dict1)
'''
********************执行结果********************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
添加数据后: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁', 'hobby': '跑步'}
'''
删除数据
方式①
通过del语句进行删除,如果键不存在,则抛出异常。
dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
del dict1['name']
print("删除数据后:",dict1)
'''
********************执行结果***************************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
删除数据后: {'age': 21, 'sex': '男', 'address': '济宁'}
'''
dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
del dict1['name1']
print("删除数据后:",dict1)
'''
****************执行结果********************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
Traceback (most recent call last):
File "E:\python\2.0 办公自动化\chapter2\Demo1.py", line 3, in <module>
del dict1['name1']
KeyError: 'name1'
'''
方式②
pop()方法
通过此方法也可以删除字典当中的数据元素,如果键不存在,则抛出异常。
dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1.pop('name')
print("pop方法删除数据后:",dict1)
'''
***************执行结果****************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
pop方法删除数据后: {'age': 21, 'sex': '男', 'address': '济宁'}
'''
dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1.pop('name1') #删除不存在的key
'''
*****************执行结果**************************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
Traceback (most recent call last):
File "E:\python\2.0 办公自动化\chapter2\Demo1.py", line 3, in <module>
dict1.pop('name1') #删除不存在的key
KeyError: 'name1'
'''
修改数据
修改数据就是把现有的键(key)对应的值改变,即指向新的数据。
方式①:
直接重新赋值修改键对应的值。
dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1['name']="李四"
print("修改后的字典值:",dict1)
'''
*******************执行结果**********************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
修改后的字典值: {'name': '李四', 'age': 21, 'sex': '男', 'address': '济宁'}
'''
方式②:
update()方法,通过调用update方法,关键字参数的方式修改字典的值。
dict1=dict(name="张三",age=21,sex="男",address="济宁")
print("初始值:",dict1)
dict1.update(name="李四")
print("修改后的字典值:",dict1)
'''
*******************执行结果*************************
初始值: {'name': '张三', 'age': 21, 'sex': '男', 'address': '济宁'}
修改后的字典值: {'name': '李四', 'age': 21, 'sex': '男', 'address': '济宁'}
'''
查看数据
字典获取数据的方式是通过键获取值。
有两种操作方式。
方式①:按键取值,键存在,返回对应的值,键不存在,抛出异常。
语法格式:value=dict1["key1"]
dict1=dict(name="张三",age=21,sex="男",address="济宁")
value=dict1['name']
print("键name对应的值:",value)
'''
*******************执行结果****************
键name对应的值: 张三
'''
dict1=dict(name="张三",age=21,sex="男",address="济宁")
value=dict1['name1']
print("键name对应的值:",value)
'''
***************执行结果*************************
Traceback (most recent call last):
File "E:\python\2.0 办公自动化\chapter2\Demo1.py", line 2, in <module>
value=dict1['name1']
KeyError: 'name1'
'''
方式②
dict1.get('key1')
通过get方法也可以获取键对应的值,键存在时,返回对应的值,不存在时,返回默认的值为None,也可以传入默认值。
dict1=dict(name="张三",age=21,sex="男",address="济宁")
value=dict1.get("name")
print("键name对应的值:",value)
'''
*****************执行结果****************
键name对应的值: 张三
'''
dict1=dict(name="张三",age=21,sex="男",address="济宁")
value=dict1.get("name1")
print("键不存在时的默认值None:",value)
value2=dict1.get("name1","李四")
print("键不存在时的默认值:",value2)
'''
***************执行结果*******************
键不存在时的默认值None: None
键不存在时的默认值: 李四
'''
字典的遍历
dict1.keys()
返回字典的所有键,数据类型为列表类型。
dict1.values()
返回字典的所有值,数据类型为列表类型。
dict1.items()
返回字典的所有数据项,数据类型为列表类型,列表中的数据格式为元组,每个元组里面是字典单个数据元素的键和值。
dict1=dict(name="张三",age=21,sex="男",address="济宁")
keys=dict1.keys()
print("键的类型:",type(keys))
print("字典键为:",keys)
values=dict1.values()
print("值的类型:",type(values))
print("字典值为:",values)
items=dict1.items()
print("项的类型:",type(items))
print("字典项为:",items)
'''
********************执行结果********************
键的类型: <class 'dict_keys'>
字典键为: dict_keys(['name', 'age', 'sex', 'address'])
值的类型: <class 'dict_values'>
字典值为: dict_values(['张三', 21, '男', '济宁'])
项的类型: <class 'dict_items'>
字典项为: dict_items([('name', '张三'), ('age', 21), ('sex', '男'), ('address', '济宁')])
'''
字典的特殊用法
可以用zip方法,把两个相等大小的列表转换成字典。
list1=['a','b','c','d']
list2=[1,2,3,4]
dict1=dict(zip(list1,list2))
print(dict1)
print(type(dict1))
'''
*******************执行结果*************************
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
<class 'dict'>
'''
以上就是字典相关的知识,希望对您有所帮助。
------------------------------------------------------------
您的支持和关注是作者持续创作的动力源泉。