初识字典
字典(Dictionary)
类似于 C++ 中的 Map
,内部都是键值对,用于创建一类对象对另一类对象的映射
但不同的是,字典中的映射类型是不固定的(键与键之间,值与值之间的类型可以不相同)
值可以取任何数据类型(甚至可以嵌套字典),但键必须是不可变的,如字符串,数字
创建字典
使用大括号 {}
创建
1 2
| personInfo = {'name': 'Tom', 'age': 18, 'hobby': ['reading', 'running', 'swimming']} print(personInfo)
|
技巧:写成多行
在某些场景下,写成多行能让内容更加清晰明了,例如这里统计几个人最喜欢的编程语言
1 2 3 4 5 6
| favoriteLanguages = { 'jen': 'python', 'sarch': 'c', 'edward': 'ruby', 'phil': 'python', }
|
访问字典
键->值
一般写法
使用中括号 []
1 2 3 4
| personInfo = {'name': 'Tom', 'age': 18, 'hobby': ['reading', 'running', 'swimming']} print(personInfo['name']) print(personInfo['age']) print(personInfo['hobby'])
|
使用get()
方法
上面的写法满足绝大多数情况,但是有时可能会引发问题:指定的键不存在时会直接报错
而某些情况是不能完全确定一个键是有没有对应的值的,这时就要用到 get()
方法
1 2 3 4 5 6 7
| personInfo = {'name': 'Tom', 'age': 18, 'job': 'student'} job = personInfo.get('job', "Tom didn't have a job yet!") print(job)
del personInfo['job'] job = personInfo.get('job', "Tom didn't have a job yet!") print(job)
|
get()
的第一个参数是要查询的键,第二个参数是键不存在时返回的默认值
遍历
这里以上面的 最喜欢的编程语言 为例
1 2 3 4 5 6
| favoriteLanguages = { 'jen': 'python', 'sarch': 'c', 'edward': 'ruby', 'phil': 'python', }
|
遍历所有键值对
1 2
| for key , value in favoriteLanguages.items(): print('Key: '+key+' Value: '+value)
|
1 2 3 4
| Key: jen Value: python Key: sarch Value: c Key: edward Value: ruby Key: phil Value: python
|
遍历所有键
1 2
| for name in favoriteLanguages.keys(): print(name)
|
技巧:排序
从 Python3.7
开始,将以插入元素的顺序遍历,但我们也可以重新排序,例如下面的方法
1 2
| for name in sorted(favoriteLanguages.keys()): print(name)
|
遍历所有值
1 2
| for language in favoriteLanguages.values(): print(language)
|
技巧:剔除重复项
我们可以运用 集合(set)
的性质来剔除重复项
集合将在下一篇中讲解
1 2
| for language in set(favoriteLanguages.values()): print(language)
|
添加键值对
直接使用 字典名[键]=值
即可
1 2 3 4 5 6 7 8 9 10
| favoriteLanguages = { 'jen': 'python', 'sarch': 'c', 'edward': 'ruby', 'phil': 'python', } print(favoriteLanguages)
favoriteLanguages['mike'] = 'java' print(favoriteLanguages)
|
1 2
| {'jen': 'python', 'sarch': 'c', 'edward': 'ruby', 'phil': 'python'} {'jen': 'python', 'sarch': 'c', 'edward': 'ruby', 'phil': 'python', 'mike': 'java'}
|
修改键值对
同样,直接使用 字典名[键]=值
即可
1 2 3 4 5 6 7 8 9 10
| favoriteLanguages = { 'jen': 'python', 'sarch': 'c', 'edward': 'ruby', 'phil': 'python', } print(favoriteLanguages)
favoriteLanguages['jen'] = 'java' print(favoriteLanguages)
|
1 2
| {'jen': 'python', 'sarch': 'c', 'edward': 'ruby', 'phil': 'python'} {'jen': 'java', 'sarch': 'c', 'edward': 'ruby', 'phil': 'python'}
|
删除键值对
使用 del 字典名[键]
1 2 3 4 5 6 7 8 9 10
| favoriteLanguages = { 'jen': 'python', 'sarch': 'c', 'edward': 'ruby', 'phil': 'python', } print(favoriteLanguages)
del favoriteLanguages['jen'] print(favoriteLanguages)
|
1 2
| {'jen': 'python', 'sarch': 'c', 'edward': 'ruby', 'phil': 'python'} {'sarch': 'c', 'edward': 'ruby', 'phil': 'python'}
|