安迪Python
2022/10/14阅读:52主题:默认主题
35. Python数据类型之字典
35. Python数据类型之字典
1. Python的数据类型
Python中有8种常见的数据类型:

【数据类型数据】
1.字符串:str,用引号括起来的内容。
2.整数:int,没有小数点的数字。
3.浮点数:float,有小数点的数字。
4.布尔类型:bool,只有2个值(True 和 False)。
【容器类型的数据】
5.列表:list。
6.元组:tuple。
7.字典:dict。
8.集合
2. 什么是字典
dictionary[ˈdɪkʃənri]:字典。
在Python中,dictionary通常简写为dict
,例如class 'dict'>
表示数据类型为字典。
字典(dict)是可迭代的,可变的容器类型的数据。
3. 字典存储的数据
字典存储的是多对有对应关系的数据。
注意两个关键点:多对和对应。
【什么是对应关系的数据】
每个城市有自己的邮编,城市名和邮编号码就是一组对应的数据。
类似的对应数据还有:
-
商品—价格
可乐:5元
矿泉水:2元
酸奶:6元
-
科目-成绩
语文:80分
数学:90分
英语:70分
-
姓名—个人信息
张三:男,23岁,北京人,学生
李四:女,35岁,上海人,老师
4. 字典的语法
字典中的1个元素就是1对数据。
这对数据分别被称为键(key)
和值(value)
。
字典的元素称为键值对(key-value)
。
字典主要由5部分构成:
-
英文大括号 { }
-
字典的键 -
键与值之间用英文冒号 :
隔开 -
字典的值 -
元素之间用英文逗号 ,
分隔

5. 新建字典
5.1 用{ }
新建一个空字典
英文大括号中一个元素也没有,就是一个空字典。
# 新建一个空字典
none_dict = { }
# 查看字典
print(none_dict)
# 查看数据类型
print(type(none_dict))
【终端输出】
{}
<class 'dict'>
none[nʌn]:无,没有,默认值。
【代码解析】
none_dict
是我给字典起的名字。
=
是赋值符号。
{ }
表示一个空字典。
5.2 新建一个存储城市邮政编码的字典
# 新建一个字典
code_dict = {"北京":100000, "上海":200000, "广州":510000}
# 查看字典
print(code_dict)
# 查看字典的数据类型
print(type(code_dict))
【终端输出】
{'北京': 100000, '上海': 200000, '广州': 510000}
<class 'dict'>
【温馨提示】type
是查询数据类型的函数。
code[kəʊd]:密码、编码。
zip code:邮政编码。
【代码解析】
code_dict
是我给字典起的名字。
=
是赋值符号。
字典用大括号{ }
表示。
"北京"
是字典第1个元素的键
;
键与值之间用英文冒号:
隔开,即"北京"
与100000
之间用英文冒号:
隔开;
100000
是字典第一元素的值
。
两个元素之间用英文逗号,
分隔,即100000
与"上海"
之间有1个英文逗号。
上述字典有3个元素,即有3个键值对,分别为:
第1个键值对:"北京":100000
第2个键值对:"上海":200000
第3个键值对:"广州":510000
"北京"、"上海"、"广州"是键
,数据类型为字符串。
100000,200000,510000是值
,数据类型为整数。
5.3 新建一个存储股票名称的字典
# 新建一个字典
stock_dict = {
600000:"浦发银行",
600036:"招商银行",
600048:"保利地产",
'000001':"平安银行"
}
# 查看字典
print(stock_dict)
# 查看字典的数据类型
print(type(stock_dict))
【终端输出】
{600000: '浦发银行', 600036: '招商银行', 600048: '保利地产', '000001': '平安银行'}
<class 'dict'>
【代码解析】
stock [stɒk]:股票。
stock_dict
是我给字典起的名字。
=
是赋值符号。
字典用大括号{ }
表示。
600000
是字典第一个元素的键
。
键与值之间用英文冒号:
隔开,即'浦发银行'
与600036
之间用英文冒号:
隔开。
'浦发银行'
是字典第1个元素的值。
两个元素之间用英文逗号,
分隔,即100000
与"上海"
之间有1个英文逗号。
上述字典有4个元素,即有4个键值对,分别为:
第1个键值对:600000: '浦发银行'
第2个键值对:600036: '招商银行'
第3个键值对:600048: '保利地产'
第4个键值对:'000001': '平安银行'
600000,600036,600048,'000001'
是字典的键,数据类型有整数和字符串。
'浦发银行','招商银行', '保利地产', '平安银行'
是字典的值,数据类型为字符串。
6. 字典元素的数据类型
字典的键
的数据类型必须是不可变数据类型:
-
字符串 -
元组 -
整数 -
浮点数 -
布尔类型
字典的值
的数据类型可以是任意数据类型,因此字典也可以作为字典中的值。
7. 列表、元组是有序的,字典是无序的
【任务】用==
验证列表、字典的有序无序。
# 列表是有序的,元素位置不同,则列表不同
student_list1 = ['姓名', '张三' ,'学号' ,'001' ,'总成绩', 480]
student_list2 = ['学号' ,'001' ,'总成绩', 480,'姓名', '张三' ]
print(student_list1 == student_list2)
# 字典是无序的,只要键值对一致,则两个字典相等
student_dict1 = {'姓名':'张三','学号':'001','总成绩':480}
student_dict2 = {'学号':'001','总成绩':480,'姓名':'张三'}
print(student_dict1 == student_dict2)
【终端输出】
False
True
上述2个列表和字典的元素内容都是一致的,只是顺序不相同。
我们用比较运算符==
分别判断两个列表、两个字典是否相等。
列表的比较结果显示为false,表示两个列表不相等,因此列表是有序的,元素顺序不一致即为不同的列表。
字典的比较结果显示为true,表示两个字典相等,因此字典是无序的,只有元素内容相同即为同一个字典。
8. 课后练习
新建一个字典info_dict,字典有3个键值对,内容如下:
-
基本信息:张三,男,1990年 -
兴趣爱好:篮球,吉他,Python -
联系方式:电话号码:18088889999,邮箱:77997799@qq.com
【思路解析】
字典的3个键:
-
基本信息
-
兴趣爱好
-
联系方式
数据类型均为字符串。
字典的3个值:
-
张三,男,1990年
【备注】第1个键值对的值含有3项并列的内容,可以用列表或元组将3个内容包含在一起。
-
篮球,吉他,Python
【备注】第2个键值对的值含有3项并列的内容,可以用列表或元组将3个内容包含在一起。
-
电话号码:18088889999,邮箱:77997799@qq.com
【备注】第3个键值对的值含有的内容是一一对应的,即电话号码对应18088889999,邮箱对应77997799@qq.com,因此用这里要用字典将2组对应的内容包含在一起。
【参考答案】
第1步
先写一个空字典。我初学的时候通常会在大括号中间按一个回车,主要是为了让多个元素对仗工整,方便查找错误。
info_dict = {
}
第2步
在空白的代码行光标出现写入键
。
写入英文冒号:
。
在冒号后写入值
。
在前2个元素之间写入一个英文逗号,
。
我初学字典的时候经常犯的错误是冒号和逗号经常用错,因此用了这样的方法避免出错。此方法不定是最好的方法,也不适合所有人,仅供大家参考。
info_dict = {
'基本信息':('张三','男','1990年'),
'兴趣爱好':['篮球','吉他','Python'],
'联系方式':{'电话号码':18088889999,'邮箱':'77997799@qq.com'}
}
# 查看字典
print(info_dict)
【终端输出】
{'基本信息': ('张三', '男', '1990年'), '兴趣爱好': ['篮球', '吉他', 'Python'], '联系方式': {'电话号码': 18088889999, '邮箱': '77997799@qq.com'}}
9. 总结

作者介绍