6. 字典数据类型
文章目录
1. 字典数据类型
字典数据(dictionary)类型提供了一种灵活的访问和组织数据的方式。像列表一样,“字典”是许多值的集合。但不像列表的下标,字典的索引可以使用许多不同数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对。
Python语言中的字典可以通过大括号({})建立,建立模式如下:
其中,键和值通过冒号连接,不同键值对通过逗号隔开。
例如,把下表中的一条雇员数据存储在字典employee中:
编号 | 姓名 | 部门 | 电子邮箱 | 电话号码 | 身份证号码 |
---|---|---|---|---|---|
10932 | 张珊 | 管理 | [email protected] | 18612345678 | 520125197907167551 |
10933 | 李思 | 软件 | [email protected] | 18612345679 | 510110195512176250 |
10934 | 王武 | 财务 | [email protected] | 18612345680 | 510102196510255826 |
employee = {
"编号":"10932","姓名":"张珊","部门":"管理","电子邮箱":"[email protected]","电话号码":"18612345678","身份证号码":"520125197907167551"}
employee
----------------------------------------------
{
'编号': '10932',
'姓名': '张珊',
'部门': '管理',
'电子邮箱': '[email protected]',
'电话号码': '18612345678',
'身份证号码': '520125197907167551'}
在这个字典中,编号、姓名、部门、电子邮箱、电话号码、身份证号码称为“键”,10932、张珊、管理、[email protected]、18612345678、520125197907167551称为这些键分别对应的“值”。
键通常是字符串,但它还可以是Python中其他任意的不可变类型:布尔型、整型、浮点型、元组、字符串,以及其他一些不可变的类型。字典本身是可变的,因此可以增加、删除或修改其中的键值对。字典的键必须保证互不相同。
- 字典中的表项是不排序的。字典打印出来的顺序与创建之初的顺序不同,这不是错误。字典是集合类型的延续,各个元素并没有顺序之分。如果一样,纯属巧合:)
print(employee)
---------------------------
{
'编号': '10932', '姓名': '张珊', '部门': '管理', '电子邮箱': '[email protected]', '电话号码': '18612345678', '身份证号码': '520125197907167551'}
1.1 访问字典值
字典最主要的用法是查找与特定键相对应的值,这通过索引符号来实现。
因为字典是不排序的,所以不能像列表那样切片。
一般来说,字典中键值对的访问模式如下,采用中括号格式:
字典中对某个键值的修改可以通过中括号的访问和赋值实现:
employee['姓名']
employee['部门'] = '人事'
print(employee)
------------------------------
'张珊'
{
'编号': '10932', '姓名': '张珊', '部门': '人事', '电子邮箱': '[email protected]', '电话号码': '18612345678', '身份证号码': '520125197907167551'}
1.2 添加键值对
通过中括号可以增加新的元素,例如雇员信息中,发现少了性别,可以通过下面的方式添加:
employee['性别'] ='女'
employee
---------------------------------
{
'编号': '10932',
'姓名': '张珊',
'部门': '管理',
'电子邮箱': '[email protected]',
'电话号码': '18612345678',
'身份证号码': '520125197907167551',
'性别': '女'}
1.3 删除键值对
通过del删除字典中某一个键值对:
del employee['性别']
employee
-------------------------
{
'编号': '10932',
'姓名': '张珊',
'部门': '管理',
'电子邮箱': '[email protected]',
'电话号码': '18612345678',
'身份证号码': '520125197907167551'}
2. 字典类型的操作
函数和方法 | 描述 |
---|---|
.keys() | 返回所有的键信息 |
.values() | 返回所有的值信息 |
.items() | 返回所有的键值对 |
.get(,) | 键存在则返回相应值,否则返回默认值 |
.pop(,) | 键存在则返回相应值,同时删除键值对,否则返回默认值 |
.popitem() | 随机从字典中取出一个键值对,以元组(key, value)形式返回 |
.clear() | 删除所有的键值对 |
del [] | 删除字典中某一个键值对 |
in | 如果键在字典中返回True,否则返回False |
2.1 keys()、values()和items()方法
有3 个字典方法,它们将返回类似列表的值,分别对应于字典的键、值和键-值对:keys()、values()和items()。这些方法返回的值不是真正的列表,它们不能被修改,没有append()方法。但这些数据类型(分别是dict_keys、dict_values 和dict_items)可以用于for 循环。
for v in employee.values():
print(v)
--------------------------
10932
张珊
管理
zhans@163.com
18612345678
520125197907167551
for k in employee.keys():
print(k)
-----------------------------
编号
姓名
部门
电子邮箱
电话号码
身份证号码
for i in employee.items():
print(i)
-------------------------------
('编号', '10932')
('姓名', '张珊')
('部门', '管理')
('电子邮箱', '[email protected]')
('电话号码', '18612345678')
('身份证号码', '520125197907167551')
利用keys()、values()和items()方法,循环分别可以迭代键、值或键-值对。请注意,items()方法返回的dict_items 值中,包含的是键和值的元组。
- 如果希望通过这些方法得到一个真正的列表,就把类似列表的返回值传递给 list函数。
employee.keys()
list(employee.keys())
------