Python学习笔记二:字典
1. 定义
字典是Python提供的另一种可变容器模型,可存储任意类型的对象。
字典是由多组键值对(key:value)组成的,每个键值对之间用逗号分隔,键值对之间用冒号分隔,整个字典包裹在花括号{}中,具体格式如下:
dictname = {key1:value1,key2:value2,key3.......}
- 键key是索引
- 值value是数据
- dict是Python的关键字和内置函数,所以创建字典时,不建议使用dict作为字典名
- 键一般是唯一的,如果有重复的键值对插入进来,会替换掉前面的,值不是唯一的
- 值的数据可以是任意类型的,但键的数据类型只能是字符串,元组和数字
2. 字典的访问
① 通过键访问值
字典是一系列的键值对,每个键都对应着一个值,所以可以通过使用键来访问相应的值
>>> messages = {'name':'smith','gender':'Man','age':'26','job':'teacher','nationality':'Germany'}
>>> messages['name']
'smith'
>>> messages['job']
'teacher'
通过这种方法访问字典的值时,需要注意指定的键必须存在,否则会抛出异常
>>> messages['Degree']
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
messages['Degree']
KeyError: 'Degree'
② 使用get()方法访问值
dict.get(key[,value]):返回指定键的值
key:指定的键
value:可选,当指定的键不存在时,可以指定返回值
>>> messages.get('Degree','postgraduate')
'postgraduate'
③ 获取字典中的键
dict.keys()方法:返回一个字典内的所有键
>>> messages
{'name': 'smith', 'gender': '男', 'age': '26', 'job': 'teacher', 'nationality': 'Germany'}
>>> messages.keys()
dict_keys(['name', 'gender', 'age', 'job', 'nationality'])
④ 获取字典中的值
dict.values():返回字典内的所有值
>>> messages.values() dict_values(['smith', '男', '26', 'teacher', 'Germany'])
⑤ 获取字典中的键和值
dict.items():以列表的形式返回字典内的键和值
>>> messages.items()
dict_items([('name', 'smith'), ('gender', '男'), ('age', '26'), ('job', 'teacher'), ('nationality', 'Germany')])
3. 字典的修改
3.1 修改字典中的值
>>> messages
{'name': 'smith', 'gender': '男', 'age': '26', 'job': 'teacher', 'nationality': 'Germany'}
# 修改smith的工作和年龄
>>> messages['job'] = 'physician'
>>> messages['age'] = 30
>>> messages
{'name': 'smith', 'gender': '男', 'age': 30, 'job': 'physician', 'nationality': 'Germany'}
3.2 删除字典中的键值
① 使用关键字del永久性删除
>>> messages = {'name': 'smith', 'gender': '男', 'age': 30, 'job': 'physician', 'nationality': 'Germany'}
>>> del messages['gender'] >>> messages {'name': 'smith', 'age': 30, 'job': 'physician', 'nationality': 'Germany'}
② 弹出字典中的键值
和在列表中的用法相同,pop()方法在字典中同样使用
>>> messages = {'name': 'smith', 'gender': '男', 'age': 30, 'job': 'physician', 'nationality': 'Germany'}
>>> popped_key_value = messages.pop('nationality')
>>> messages
{'name': 'smith', 'gender': '男', 'age': 30, 'job': 'physician'}
>>> popped_key_value
'Germany'
3.3 添加键值对
① 通过键添加值
字典添加键值对非常简单,只需要给出新的键和对应的值即可
>>> messages = {'name': 'smith', 'gender': '男', 'age': 30, 'job': 'physician', 'nationality': 'Germany'}
# 添加smith的婚姻状态
>>> messages['Marital status'] = 'married'
>>> messages
{'name': 'smith', 'gender': '男', 'age': 30, 'job': 'physician', 'nationality': 'Germany', 'Marital status': 'married'}
② 合并/扩展字典
在列表中,使用extend()方法将一个列表扩展到目标列表中,那么在字典,使用update()方法,来实现这一功能。
dict1.update(dict2):将字典dict2扩展更新到字典dict1中
由于字典中键的唯一性,所以在使用方法update()时,需要注意:如果被合并的字典中有已知的键值对时,会覆盖/替换原有的键值对
>>> information1 = {'name':'john','age':22,'job title':'intern'}
>>> information2 = {'name':'john','age':'36','job title':'Deputy Chief Physician','Marital status':'married'}
>>> information1.update(information2)
>>> information1
{'name': 'john', 'age': '36', 'job title': 'Deputy Chief Physician', 'Marital status': 'married'}
总结:update()方法的用法就是:将字典中原本有的键值对更新,没有的键值对加上
3.4 判断键是否在字典中
>>> messages = {'name': 'smith', 'gender': '男', 'age': 30, 'job': 'physician', 'nationality': 'Germany'}
>>> 'job' in messages
True
>>> 'Marital status' in messages
False
4. 字典排序
5. 字典的遍历
① 遍历键值对
>>> messages = {'name': 'smith', 'gender': '男', 'age': 30, 'job': 'physician', 'nationality': 'Germany'}
>>> for key,value in messages.items():
print('%s:' % key.title())
value = str(value)
print(value.title() + '\n')
Name:
Smith
Gender:
男
Age:
30
Job:
Physician
Nationality:
Germany
② 遍历键
>>> for key in messages.keys(): print(key.title()) Name Gender Age Job Nationality
③ 遍历值
>>> for value in messages.values(): value = str(value) print(value.title()) Smith 男 30 Physician Germany >>>
在遍历值的时候,很有可能会出现重复值,这是因为使用values()方法遍历字典,只是将字典中的值提取了出来,并没有考虑去重的问题,如果想要去重,可以使用函数set()。
set()的作用:创建一个无重复的元素集
>>> favorite_language= {
'john':'python',
'smith':'c++',
'ben':'go',
'amy':'python'
}
>>> for language in set(favorite_language.values()):
print(language.title())
Python
Go
C++
6. 嵌套
6.1 字典列表
列表中的元素由字典组成,或者含有字典的列表,字典列表的本质是列表。
① 创建一个简单的字典列表
>>> student1 = {'name':'john','age':22}
>>> student2 = {'name':'smith','age':21}
>>> student3 = {'name':'amy','age':22}
>>> students = [student1,student2,student3]
>>> students
[{'name': 'john', 'age': 22}, {'name': 'smith', 'age': 21}, {'name': 'amy', 'age': 22}]
② 字典列表元素的访问
>>> students[0]['name']
'john'
>>> for student in students:
for key,value in student.items():
print(key + ':')
print(value)
print('----------------')
name:
john
age:
22
----------------
name:
smith
age:
21
----------------
name:
amy
age:
22
----------------
6.2 字典嵌套列表
① 创建一个嵌套列表的字典
>>> student_favorite_language = {
'john':['python','c'],
'smith':['java','html','go'],
'amy':['c++','python']
}
>>> type(student_favorite_language)
<class 'dict'>
② 访问
>>> student_favorite_language['john'][0] 'python' >>> for key,value in student_favorite_language.items(): for language in set(value): print(language) c python go java html c++
6.3 字典嵌套字典
① 创建一个嵌套字典的字典
>>> users = {
'William Morris': {'first_name': 'Morris', 'last_name': 'William', 'location': 'New York'},
'Tom Cruise': {'first_name': 'Cruise', 'last_name': 'Tom', 'location': 'Los Angeles'},
'John Dewey': {'first_name': 'Dewey', 'last_name': 'John', 'location': 'Chicago'}
}
② 访问
>>> users['William Morris']['first_name']
'Morris'
>>> for key,value in users.items():
print(key+':')
for key1,value1 in value.items():
print('%s:%s'%(key1,value1))
print('\n')
William Morris:
first_name:Morris
last_name:William
location:New York
Tom Cruise:
first_name:Cruise
last_name:Tom
location:Los Angeles
John Dewey:
first_name:Dewey
last_name:John
location:Chicago

浙公网安备 33010602011771号