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

  

  

 

  

 

  

 

 

 

  

 

  

  

 

posted @ 2023-04-17 10:57  ISPEAKER  阅读(69)  评论(0编辑  收藏  举报