曾经在儿时小学阶段学习语文时,字典在学习过程中起到了非常的作用,也就是在那时候,我们学会了字典的使用方法,通过拼音或部首,找到汉字所在的页码,通过页码就可以找到汉字的释义。
在python当中,字典是一类非常重要的复合数据类型,它的数据元素格式和之前学习的列表、元组和集合不同,字典中的元素是由两部分组成:键(key):值(value)对。字典是一种映射类型的数据结构。
字典中的数据是按照键(key)进行索引存储和获取的。
字典是一个无序、可变和有索引的复合数据结构体,里面可以存放任何数据类型的数据。
字典中的数据元素格式为:key:value,键和值之间用冒号连接,数据元素之间是通过逗号分隔,和列表、元组和集合一样。
方式一:直接用界定符赋值的方式创建
- dict1={"name":"张三","age":20,"sex":"男","address":"济宁"}
- print("dict1的数据类型:",type(dict1))
- print("dict1的值为:",dict1)
-
-
- '''
- ************执行结果*****************
- dict1的数据类型:
- dict1的值为: {'name': '张三', 'age': 20, 'sex': '男', 'address': '济宁'}
- '''
方式二:通过dict函数创建。
通过此函数生成时,需要按照关键字参数(后续会在函数章节进行详细讲解什么是关键字传参)的方式进行传参。
- dict1=dict(name="张三",age=21,sex="男",address="济宁")
- print("dict1的数据类型:",type(dict1))
- print("dict1的值为:",dict1)
-
-
- '''
- *****************执行结果******************
- dict1的数据类型:
- 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
- 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
- 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
- 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)
-
- '''
- ********************执行结果********************
- 键的类型:
- 字典键为: dict_keys(['name', 'age', 'sex', 'address'])
- 值的类型:
- 字典值为: dict_values(['张三', 21, '男', '济宁'])
- 项的类型:
- 字典项为: 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}
- '''
以上就是字典相关的知识,希望对您有所帮助。
------------------------------------------------------------
您的支持和关注是作者持续创作的动力源泉。