本文是Python实战–从入门到精通系列的第四篇文章:
Python实战从入门到精通第一讲–Python中的变量和数据类型
Python实战从入门到精通第二讲–Python中列表操作详解
Python实战从入门到精通之三 – 教你使用Python中条件语句
Python实战从入门到精通之四 – 教你使用Python中字典
文章目录
1、字典初识
字典定义: Python中,字典是一系列键-值对。每个键都与一个值相关联。
访问方式: 通过键访问与之关联的值,这些值可以是数字、字符串、列表乃至字典,Python中的任何对象基本都可以作为字典的值。
表达方式: 字典使用花括号来表示,键-值使用冒号分隔,键-值对之间使用逗号分隔,如下所示:
persons = {} # 表示空字典
person = {'age': 19, 'city': 'BeiJing'}
2、访问字典中的值
字典中,访问字典中的值需要使用:字典名[键] 的方式进行访问,如:
person = {'age': 19, 'city': 'BeiJing'}
print(person['age'])
输出为:19
3、字典元素操作
3.1 字典内添加键-值对
字典是动态结构,能够随时在其中添加键-值对,通过使用:字典名[键] = 值的方式在在字典中添加元素,如:
person = {'age': 19; 'city': 'GuangZhou'}
person['Province'] = 'GuangDong'
print(person)
输出为:{'age':19, 'Province': 'GuangDong', 'city': 'GuangZhou'}
注:字典内键值对的排列顺序与添加顺序不同,字典不关心键值对的添加顺序,只关心键值之间的关系
3.2 删除键-值对
可以使用del语句将相应的键-值对彻底删除,使用规则:指定字典名和要删除的键,,如:
person = {'age': 19, 'city': 'BeiJing'}
print(person) # 输出原始字典元素
del person['city']
print(person) # 显示删除city键的字典元素
输出为:{'age': 19, 'city': 'BeiJing'}
{'age': 19}
删除的键值对永远消失
3.3 修改字典中的值
通过指定:字典名[键]和新的值的方式对字典的值进行修改,
person = {'age': 19, 'city': 'BeiJing'}
print(person) # 输出原始字典元素
person['age':25]
print(person) # 显示修改后的字典元素
输出为:{'age': 19, 'city': 'BeiJing'}
{'age': 25, 'city': 'BeiJing'}
3.4 多行表示字典
对于很大的字典,或者为了表达清晰,我们可以使用多行来表示字典,如:
favorite_languages = {
‘Mary’: ‘C’, # 要有四个空格缩进
‘John’: ‘Python’,# 缩进与第一行相同
‘David’: ‘Java’, # 最后一行需要逗号
} #缩进,与键值对缩进相同
4、字典遍历
4.1 遍历字典所有的键-值对
遍历字典所有的键-值对,可以使用for循环实现:
- for语句第一部分: 声明两个变量,用于存储键-值对中的键和值。
- for语句第二部分: 包含字典名和方法items(),items()方法可以返回一个键-值对列表。
用for循环遍历字典所有键-值对例子:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
# key和value分别表示两个变量,存储键和值,
# user_0.items(),for语句的第二部分,字典名和items方法
for key, value in user_0.items():
print("\nkey:"+key)
print("value:" + value)
运行结果:
key:username
value:efermi
key:first
value:enrico
key:last
value:fermi
4.2 遍历字典中的所有键
遍历字典中的所有键,使用方法**keys()**来实现。
方法keys()可以返回包含字典中所有键的列表。
Keys方法遍历字典中的所有键:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key in user_0.keys(): #keys()方法遍历所有键
print(key)
运行结果:
last
username
first
4.3 按特定顺序遍历字典中的多有键
用keys方法获取字典中的元素时,获取顺序是不可预测的。如果想获得特定顺序,可以在for循环中调用sorted() 函数对元素进行排序。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key in sorted(user_0.keys()): # sorted()函数进行排序
print(key)
运行结果:
first
last
username
4.4 遍历字典中的所有值
values() 方法能够返回一个只包含字典中值的列表。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
favorite_languages = {
'Jen': 'python',
'Sarah': 'c',
'Edward': 'python',
}
for language in favorite_languages.values(): # 遍历字典中所有的值
print(language)
运行结果:
python
python
c
values方法没有考虑是否重复。使用集合set,可以使得列表元素独一无二。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
favorite_languages = {
'Jen': 'python',
'Sarah': 'c',
'Edward': 'python',
}
# 使用集合set,使得值独一无二
for language in set(favorite_languages.values()):
print(language)
运行结果(使用集合set):
c
python
同样的,values方法也可以调用sorted函数实现按特定顺序遍历。
5、字典嵌套
字典存储在列表中,列表存储在字典中,这称为嵌套。
5.1 字典列表
列表内元素是字典的形式。
字典列表例子: 定义三个字典,每个包含颜色和点数两个键和其相关联的值,将其三个字典存储在一个了列表中。
# 三个字典
alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}
aliens = [alien_0, alien_1, alien_2] #字典列表
# 输出列表内容
for alien in aliens:
print(alien)
输出结果:
{'points': 5, 'color': 'green'}
{'points': 10, 'color': 'yellow'}
{'points': 15, 'color': 'red'}
5.2 在字典中存储列表
当字典中的一个键关联多个值时,可以在字典中嵌套一个列表。
在字典中存储列表例子: 定义一个字典,存储访问每个人喜欢的语言,这个时候,每个人喜欢的语言,可能不止一种,这时就会用到列表存储:
favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():
print("\n" + name.title() + "'s favorite languages are:")
for language in languages:
print("\t" + language.title())
输出结果为:
Jen's favorite languages are:
Python
Ruby
Sarah's favorite languages are:
C
Phil's favorite languages are:
Python
Haskell
Edward's favorite languages are:
Ruby
Go
5.3 在字典中存储字典
与键关联的值也是一个字典
字典中存储字典例子: 对于每位用户,我们都存储了其三项信息:名、姓和居住地;为访问这些信息,我们遍历所有的用户名,
并访问与每个用户名相关联的信息字典:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
users = {
'aeinstein': {
'first': 'albert',
'last': 'einstein',
'location': 'princeton',
},
'mcurie': {
'first': 'marie',
'last': 'curie',
'location': 'paris',
},
}
for username, user_info in users.items():
print("\nUsername: " + username)
full_name = user_info['first'] + " " + user_info['last']
location = user_info['location']
print("\tFull name: " + full_name.title())
print("\tLocation: " + location.title())
输出结果:
Username: mcurie
Full name: Marie Curie
Location: Paris
Username: aeinstein
Full name: Albert Einstein
Location: Princeton