字典与集合
1. 引言
在编程中,数据结构是组织和存储数据的方式。字典和集合是两种非常常见且有用的数据结构。字典允许我们以键值对的形式存储数据,而集合则用于存储唯一元素的无序集合。掌握这两种数据结构的基本操作和方法,将有助于我们更高效地处理数据。
2. 核心概念讲解
2.1 字典
2.1.1 字典的创建
字典是Python中的一种可变容器模型,可以存储任意类型的对象。字典中的每个元素都是一个键值对,键和值之间用冒号分隔,元素之间用逗号分隔,整个字典用花括号{}
括起来。
创建一个字典
mydict = {‘name’: ‘Alice’, ‘age’: 25, ‘city’: ‘New York’}
2.1.2 字典的基本操作
- 访问元素:通过键来访问字典中的值。
print(mydict[‘name’]) 输出: Alice
- 修改元素:通过键来修改字典中的值。
mydict[‘age’] = 26
print(mydict) 输出: {‘name’: ‘Alice’, ‘age’: 26, ‘city’: ‘New York’}
- 添加元素:通过新的键来添加新的键值对。
mydict[’email’] = ‘alice@example.com’
print(mydict) 输出: {‘name’: ‘Alice’, ‘age’: 26, ‘city’: ‘New York’, ’email’: ‘alice@example.com’}
- 删除元素:使用
del
语句删除键值对。
del mydict[‘city’] print(mydict) 输出: {‘name’: ‘Alice’, ‘age’: 26, ’email’: ‘alice@example.com’}
2.1.3 字典的常用方法
keys()
:返回字典中所有的键。
print(mydict.keys()) 输出: dictkeys([‘name’, ‘age’, ’email’])
values()
:返回字典中所有的值。
print(mydict.values()) 输出: dictvalues([‘Alice’, 26, ‘alice@example.com’])
items()
:返回字典中所有的键值对。
print(mydict.items()) 输出: dictitems([(‘name’, ‘Alice’), (‘age’, 26), (’email’, ‘alice@example.com’)])
get()
:通过键获取值,如果键不存在,返回默认值。
print(mydict.get(‘name’, ‘Unknown’)) 输出: Alice
print(mydict.get(‘phone’, ‘Unknown’)) 输出: Unknown
pop()
:删除并返回指定键的值。
age = mydict.pop(‘age’)
print(age) 输出: 26
print(mydict) 输出: {‘name’: ‘Alice’, ’email’: ‘alice@example.com’}
2.2 集合
2.2.1 集合的创建
集合是一个无序且不重复的元素集。集合用花括号{}
或set()
函数创建。
创建一个集合
myset = {1, 2, 3, 4, 5}
2.2.2 集合的基本操作
- 添加元素:使用
add()
方法添加元素。
myset.add(6)
print(myset) 输出: {1, 2, 3, 4, 5, 6}
- 删除元素:使用
remove()
方法删除元素,如果元素不存在会报错;使用discard()
方法删除元素,如果元素不存在不会报错。
myset.remove(3)
print(myset) 输出: {1, 2, 4, 5, 6}
myset.discard(7)
print(myset) 输出: {1, 2, 4, 5, 6}
- 集合运算:集合支持并集、交集、差集等运算。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
并集
print(set1 | set2) 输出: {1, 2, 3, 4, 5}
交集
print(set1 & set2) 输出: {3}
差集
print(set1 – set2) 输出: {1, 2}
3. 实例和练习
3.1 实例
实例1:统计单词频率
text = “apple banana apple orange banana apple”
words = text.split()
wordcount = {}
for word in words:
if word in wordcount:
wordcount[word] += 1
else:
wordcount[word] = 1
print(wordcount) 输出: {‘apple’: 3, ‘banana’: 2, ‘orange’: 1}
实例2:去除列表中的重复元素
numbers = [1, 2, 2, 3, 4, 4, 5]
uniquenumbers = list(set(numbers))
print(uniquenumbers) 输出: [1, 2, 3, 4, 5]
3.2 练习
练习1:创建一个字典,存储学生的姓名和成绩,然后计算平均成绩。
students = {‘Alice’: 85, ‘Bob’: 90, ‘Charlie’: 78}
averagescore = sum(students.values()) / len(students)
print(averagescore)
练习2:给定两个集合,找出它们的交集和差集。
seta = {1, 2, 3, 4, 5}
setb = {4, 5, 6, 7, 8}
intersection = seta & setb
difference = seta – setb
print(intersection) 输出: {4, 5}
print(difference) 输出: {1, 2, 3}
4. 总结
在本章中,我们学习了字典和集合这两种重要的数据结构。字典通过键值对的形式存储数据,支持多种操作和方法,如访问、修改、添加、删除元素等。集合则用于存储唯一元素,支持并集、交集、差集等运算。通过实例和练习,我们进一步巩固了这些概念,并学会了如何在实际编程中应用它们。掌握字典和集合的使用,将大大提高我们处理数据的效率和灵活性。