一:字典的生成
电话簿:
报警求助 | 110 |
交通事故 | 122 |
医疗急救 | 120 |
消防火警 | 119 |
全国统一水上遇险求助电话 | 12395 |
这就是最典型的一种“键对位”集合,每一个“键”都有一个相应的“值”相对应,“紧急电话”与“电话号码相对应。
在 Python 的字典中,”键“称为 key
,”值“称为 value
。字典中每一个 元素
都是一个 key
和一个 value
的组合。
#三种笔的名字
pen_name=['圆珠笔','毛笔','钢笔']
#各种笔的价钱
pen_value=[5,15,25]
想要知道对应笔的价钱:
首先我们要根据笔的名字,来找的索引
然后通过索引,找到在价位表中对应的价钱,但这样做有个缺点:列表中的元素越多,列表越长,查找数据的耗时越多,且不管是写还是查都很麻烦。
但是有了字典(dict) 后,就可以将笔的种类作为 key 值,价钱作为 value,生成一组组的数据,即"键值对"。这样的话无论字典中有多少元素,都可以快速获得某个 key
对应的 value
二:字典的常用操作
1.如何创建字典
创建元组使用小括号,创建列表使用中括号,创建字典就使用 大括号。
dict1 = {}
先前我们学过,用 list()
方法会创建一个空列表,tuple()
方法会创建一个空元组,同样地,内置方法 dict()
也会创建一个空字典。
dict2 = dict()
如果要在字典中写入数据,每个元素都必须是 key: value
的写法,举例如下:
pen_dict = {'圆珠笔': 5,'毛笔': 15,'钢笔': 25}
注意:字典的 key
值可以是任意 不可变的数据类型,但 value
值可以使用各种不同的类型,例如这样的字典也是合法的:
test_dict = {1: 2,'test_str': 'mengxinchengxuyaun',None: [1,2,3]}
在这个例子中,一个 key - value 对是整数 1 和 2 的组合,另一个是两个字符串,还有一个是 None 和列表……这些混合在一起使用,看上去毫无意义,但都却是合法的。
2.字典的增删改查
查:
如何获取字典中某个 key
值所对应的 value
呢?输入 dict[key]
即可,代码如下:
# 通过 key 值获取 value
courses_dict = {1: 'linux',2: 'vim',3: 'python'}
print(courses_dict[1])
#结果为
'linux'
print(courses_dict[2])
#结果为
'vim'
注意:不要与列表的获取元素搞混,列表的中括号里写的是 索引
,而字典的中括号里写的是 key
的值。
如果 key 不存在,使用 dict[key]
则会抛出 KeyError 异常。有的时候为了避免这种错误出现,我们会使用字典的 get
方法获取 key 对应的 value,如果此时 key 不存在则默认返回 None 而不会报出异常。
courses_dict[2]
'Vim'
courses_dict.get(2)
'Vim'
# 如果 key 不存在,则默认返回 None 而不会报出异常
courses_dict.get(4)
# 以在 get 方法中给定一个默认值,如果 key 不存在则返回默认值
courses_dict.get(4, 'default')
'default'
增和改:
在字典中 增加元素 和 修改元素 的代码其实是相同的,只需要为字典中某一个 key
进行赋值,区别在于:
a.如果此时 key
存在,则判断为你在修改元素,更新该 key
对应的 value
值
b.如果不存在,则判断为你在添加元素,向字典中增加该 key: value
键值对:
courses_dict = {1: 'linux',2: 'vim'}
## 修改元素
courses_dict[2] = 'Python'
## 添加元素
courses_dict[3] = 'Java'
print(courses_dict)
##结果为
{1: 'Linux', 2: 'Python', 3:'Java'}
删:
可以使用 Python 的内置方法 del
,将字典中不需要的键值对彻底删除。删除时,需要指定 字典名 和 需要删除的 key
值。
courses_dict = {1: 'linux',2: 'vim',3: 'java'}
##删除
del courses_dict[1]
print(courses_dict)
##结果为
{2: 'vim',3: 'java'}
还可以使用 pop()
方法,返回 key 对应的 value,并将该键值对删除:
courses_dict = {1: 'linux',3: 'java'}
courses_dict.pop(3)
##返回值:
'java'
print(courses_dict)
##结果为
{1: 'linux'}
三:遍历字典
字典是可以遍历的,有时你想得到所有的键值对,有时你想得到所有的键,或值,这些都有办法实现。
1.遍历键值对:
方法一:使用 items()
方法
首先我们更新一下课程字典,使元素增多一些;再使用 dict.items()
方法,看看输出的是什么:
courses_dict = {2: 'Vim', 5: 'bash', 6: 'python'}
print(courses_dict.items())
##结果为
dict_items([(2, 'Vim'), (5, 'bash'), (6, 'python')])
可以看到,items()
方法返回了一个列表,列表中的元素是二元元组,对应着字典中每个元素的键和值。明白了这个,我们就可以用 for 循环
对 dict.items()
进行遍历。
for course in courses_dict.items():
print(course)
##结果为
(2, 'Vim')
(5, 'Bash')
(6, 'Python')
方法二:在 for 关键词后面加两个变量分别获取元组中的值
for key, value in courses_dict.items():
print(key, value)
2 Vim
5 Bash
6 Python
2.遍历字典中的所有键
我们可以使用 keys()
方法来获取字典的所有键,同样我们先执行一下 dict.keys()
,看看返回的是什么:
print(courses_dict.keys())
##结果为
dict_keys([2, 5, 6])
可以看到,同样返回了一个列表,列表中每个元素都是字典的一个 key
。、
我们同样使用 for 循环
对 dict.keys()
进行遍历。
for key in courses_dict.keys():
print(key)
##结果为
2
5
6
遍历字典中的所有值
学会了遍历所有键,那遍历所有值就很容易了,只需在打印时 print(dict[key])
即可:
for key in courses_dict.keys():
print(courses_dict[key])
##结果为
Vim
bash
python
也可以用 values()
方法来得到所有值:
print(courses_dict.values())
##结果为
dict_values(['Vim', 'Bash', 'Python'])
for value in courses_dict.values():
print(value)
##结果为
Vim
bash
python