下面是对“Python中的字典及嵌套遍历”的完整攻略。
什么是字典
Python中的字典(dict)是一种可变的、无序的键值对(key-value)集合,其中的元素是唯一的,且key必须是不可变的类型,如字符串、数字或元组。
字典的基本操作
创建字典
可以使用花括号 {} 或 dict() 来创建空的字典,也可以使用字典字面量来创建带有初始数据的字典,示例如下:
# 创建空字典
empty_dict = {}
empty_dict = dict()
# 创建带有初始数据的字典
person_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
获取和修改字典元素
可以使用方括号 [] 来获取或修改字典中的元素,示例如下:
# 获取字典元素
name = person_dict['name']
print(name) # 输出: Alice
# 修改字典元素
person_dict['age'] = 30
print(person_dict) # 输出: {'name': 'Alice', 'age': 30, 'gender': 'female'}
# 添加新元素
person_dict['email'] = 'alice@example.com'
print(person_dict) # 输出: {'name': 'Alice', 'age': 30, 'gender': 'female', 'email': 'alice@example.com'}
删除字典元素
可以使用 del 语句来删除字典元素,示例如下:
# 删除字典元素
del person_dict['email']
print(person_dict) # 输出: {'name': 'Alice', 'age': 30, 'gender': 'female'}
遍历字典
可以使用 for 循环来遍历字典的键、值或键值对,示例如下:
# 遍历字典键
for key in person_dict.keys():
print(key)
# 遍历字典值
for value in person_dict.values():
print(value)
# 遍历字典键值对
for key, value in person_dict.items():
print(key, value)
字典的嵌套
字典的值也可以是另一个字典,这种嵌套的结构非常适合用来表示复杂的信息,如:
users_dict = {
'user1': {'name': 'Alice', 'age': 25},
'user2': {'name': 'Bob', 'age': 30},
'user3': {'name': 'Charlie', 'age': 35},
}
字典嵌套遍历
嵌套字典的遍历需要嵌套使用 for 循环,外层循环遍历字典的键,内层循环遍历子字典的键或值,示例如下:
# 遍历外层字典的键和子字典
for user_id, user_dict in users_dict.items():
print('User ID:', user_id)
for key, value in user_dict.items():
print(key, value)
上面的代码会输出以下结果:
User ID: user1
name Alice
age 25
User ID: user2
name Bob
age 30
User ID: user3
name Charlie
age 35
如果内层循环遍历子字典的键,则输出的结果如下:
# 遍历外层字典的键和子字典
for user_id, user_dict in users_dict.items():
print('User ID:', user_id)
for key in user_dict.keys():
print(key, user_dict[key])
上面的代码输出的结果与前面相同。
示例说明
下面给出两个示例,有助于更好地理解字典及嵌套遍历的应用场景。
示例1:统计单词出现次数
假设有一篇英文文章,需要统计其中每个单词出现的次数,可以定义一个空字典 word_count_dict,遍历文章中的每个单词,将单词作为键,出现次数作为值存储在字典中,代码如下:
article = 'This is an example article used to show how to count word occurrence in Python. It can be used for any text file or web page as well.'
word_count_dict = {}
for word in article.split():
if word in word_count_dict:
word_count_dict[word] += 1
else:
word_count_dict[word] = 1
for key, value in word_count_dict.items():
print(key, value)
上面的代码会输出文章中所有单词出现的次数,结果如下:
This 1
is 1
an 1
example 1
article 1
used 2
to 1
show 1
how 1
count 1
word 1
occurrence 1
in 1
Python. 1
It 1
can 1
be 1
for 1
any 1
text 1
file 1
or 1
web 1
page 1
as 1
well. 1
示例2:根据多个属性对学生列表进行排序
假设有一个学生列表,其中每个学生是一个字典,包含姓名、年龄和成绩三个属性,需要按照年龄和成绩的优先级对学生列表进行排序,代码如下:
students = [
{'name': 'Alice', 'age': 20, 'score': 90},
{'name': 'Bob', 'age': 25, 'score': 85},
{'name': 'Charlie', 'age': 20, 'score': 95},
{'name': 'David', 'age': 30, 'score': 80},
{'name': 'Emma', 'age': 25, 'score': 90},
]
sorted_students = sorted(students, key=lambda x: (x['age'], x['score']), reverse=True)
for student in sorted_students:
print(student)
上面的代码会输出按照年龄和成绩排序后的学生列表,结果如下:
{'name': 'David', 'age': 30, 'score': 80}
{'name': 'Emma', 'age': 25, 'score': 90}
{'name': 'Bob', 'age': 25, 'score': 85}
{'name': 'Charlie', 'age': 20, 'score': 95}
{'name': 'Alice', 'age': 20, 'score': 90}
上面的代码中,使用 sorted 函数对学生列表进行排序,key 参数指定排序规则,lambda 函数返回一个元组,元组的第一个元素是年龄,第二个元素是成绩,reverse 参数为 True 表示降序排列。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中的字典及嵌套遍历 - Python技术站