持续分享:机器学习、深度学习、python相关内容、日常BUG解决方法及Windows&Linux实践小技巧。
如发现文章有误,麻烦请指出,我会及时去纠正。有其他需要可以私信我或者发我邮箱:[email protected]
Python中的字典和集合是两个重要的数据结构,它们在实际编程中经常被使用。
本文将详细讲解Python数据结构中的字典、集合
目录
(4)pop(key):删除字典中指定键的键值对,并返回被删除的值
一、字典
1.1 字典的简介
字典是Python中一种可变、无序、键值对的数据结构。它是由一系列的键和相应的值组成,键是唯一的,值可以重复。字典中的键值对之间没有明确的顺序,通过键来访问对应的值。字典使用花括号{}来表示,键和值之间使用冒号:分隔,各键值对之间使用逗号,分隔。例如:
student = {"name": "Tom", "age": 18, "gender": "male"}
1.2 字典的发展历史
Python中的字典最早由荷兰计算机科学家Guido van Rossum在1980年代中期设计实现。在早期的版本中,字典的实现使用了散列表(Hash Table)的数据结构,这是一种支持快速插入、删除和查找的数据结构。早期的Python字典实现受到了其他编程语言(如Perl)中字典的启发,并进行了一些优化。由于散列表的特性,Python的字典拥有了良好的性能,成为Python语言中的核心数据结构之一。
随着Python的发展,字典在语法和性能上进行了进一步的改进。下面是关于Python字典发展史的一些里程碑。
-
Python 2.0 在Python 2.0版本中,字典的内部实现进行了一些重大的改进。引入了新的哈希算法和散列碰撞的解决方案。这些改进提高了字典的性能和稳定性,使得字典可以更好地应对大规模数据集合的操作。
-
Python 3.6 在Python 3.6版本中,字典的语法进行了一些改进。新增了一种新的字面量语法,在创建字典时可以使用简化的表达式,提高了代码的可读性和简洁性。例如,可以使用花括号{}来创建一个空字典,也可以使用冒号:来指定键值对。
-
Python 3.7 在Python 3.7版本中,字典中的键值对保持插入顺序。这意味着字典中的元素将按照插入的顺序进行遍历,而不是无序的。这个改进提供了更好的可预测性和可靠性,使得字典在某些应用场景中更加实用。
目前,Python中的字典已经非常成熟和稳定。在Python的版本迭代中,字典一直是一个重点关注和改进的对象,以满足各种不同的应用需求。
1.3 字典的应用场景
字典的用途非常广泛,常见的应用场景包括:
- 数据存储:字典可以用于存储需要通过键值对进行访问的数据,比如存储学生的成绩、员工的工资等。
- 数据处理:字典可以用于对数据进行分组、分类和汇总,通过键的特性可以快速查找和访问相应的值。
- 数据传递:字典可以作为函数的参数和返回值,用于传递和返回多个相关的值。
1.4 字典的使用方法
1.4.1 创建字典
我们可以通过以下几种方式创建字典:
(1)使用花括号创建空字典
my_dict = {}
print(my_dict) # 输出:{}
(2)使用键值对创建字典
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
print(my_dict) # 输出:{'name': 'Tom', 'age': 20, 'gender': 'male'}
(3)使用dict()函数创建字典
my_dict = dict(name='Tom', age=20, gender='male')
print(my_dict) # 输出:{'name': 'Tom', 'age': 20, 'gender': 'male'}
1.4.2 访问字典元素
我们可以通过键来访问字典中的值:
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
print(my_dict['name']) # 输出:Tom
print(my_dict['age']) # 输出:20
注意:如果访问的键不存在于字典中,会抛出KeyError异常。可以使用get()
方法来避免异常的发生:
print(my_dict.get('name')) # 输出:Tom
print(my_dict.get('height')) # 输出:None
1.4.3 修改字典元素
字典中的元素是可变的,我们可以直接通过键来修改值:
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
my_dict['age'] = 22
print(my_dict) # 输出:{'name': 'Tom', 'age': 22, 'gender': 'male'}
1.4.4 添加字典元素
我们可以通过设置一个新的键值对来添加字典元素:
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
my_dict['height'] = 180
print(my_dict) # 输出:{'name': 'Tom', 'age': 20, 'gender': 'male', 'height': 180}
1.4.5 删除字典元素
我们可以使用del
语句来删除字典中的元素:
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
del my_dict['age']
print(my_dict) # 输出:{'name': 'Tom', 'gender': 'male'}
1.4.6 遍历字典
我们可以使用for
循环来遍历字典的键或值:
(1)遍历键
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
for key in my_dict.keys():
print(key)
# 输出:
# name
# age
# gender
(2)遍历值
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
for value in my_dict.values():
print(value)
# 输出:
# Tom
# 20
# male
(3)遍历键值对
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
for key, value in my_dict.items():
print(key, value)
# 输出:
# name Tom
# age 20
# gender male
1.4.7 字典方法
字典提供了一系列常用的方法,以下是一些常用的字典方法:
(1)keys()
:返回字典中所有的键
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
print(my_dict.keys()) # 输出:dict_keys(['name', 'age', 'gender'])
(2)values()
:返回字典中所有的值
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
print(my_dict.values()) # 输出:dict_values(['Tom', 20, 'male'])
(3)items()
:返回字典中所有的键值对
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
print(my_dict.items()) # 输出:dict_items([('name', 'Tom'), ('age', 20), ('gender', 'male')])
(4)pop(key)
:删除字典中指定键的键值对,并返回被删除的值
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
value = my_dict.pop('age')
print(my_dict) # 输出:{'name': 'Tom', 'gender': 'male'}
print(value) # 输出:20
(5)clear()
:删除字典中的所有键值对
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
my_dict.clear()
print(my_dict) # 输出:{}
(6)copy()
:复制字典
my_dict = {'name': 'Tom', 'age': 20, 'gender': 'male'}
new_dict = my_dict.copy()
print(new_dict) # 输出:{'name': 'Tom', 'age': 20, 'gender': 'male'}
1.5 字典的总结
字典作为一种核心的数据结构,具有以下几个特点和优势:
- 灵活性:字典可以存储任意类型的数据,可以嵌套和组合,适用于各种复杂的数据场景。
- 快速查找:字典通过键值对的方式存储和访问数据,在数据量较大时仍能提供快速的访问速度。
- 可变性:字典中的键和值可以随时修改、添加或删除,使得字典具有较强的动态性。
- 插入顺序保持:自Python 3.7起,字典中的元素按照插入的顺序遍历,提供了更好的可预测性和可靠性。
总之,字典是Python语言中非常重要和实用的数据结构,具有广泛的应用场景。它在Python发展史中经历了多次的改进和优化,不断提高性能和稳定性。在实际编程中,熟练运用字典可以提高程序的效率和可维护性。
二、集合
2.1 集合的简介
集合是Python中用于存储唯一元素的一种数据结构。它可以存储任意类型的数据,但在集合中每个元素都只能出现一次。集合是由一组无序、互不相同的元素构成的。在Python中,集合使用花括号{}表示,元素之间使用逗号,分隔。例如:
fruits = {"apple", "orange", "banana"}
2.2 集合的发展历史
集合作为一种重要的数据结构,也在Python的发展过程中不断进行改进和优化。下面是关于Python集合发展史的一些里程碑。
-
Python 2.3 在Python 2.3版本中,集合(set)首次作为一种基本的数据类型引入到Python中。集合的引入使得Python具备了更丰富的数据结构和操作,为程序开发提供了更多的选择。
-
Python 2.6 在Python 2.6版本中,集合引入了新的操作符和方法,增强了集合的功能和灵活性。新增了与集合相关的运算符,如并集运算符|、交集运算符&、差集运算符-等,方便了集合之间的比较和操作。
-
Python 3.0 在Python 3.0版本中,集合的内部实现进行了一些改进和优化。使用了更高效的散列表实现,提高了集合的性能和稳定性。同时,集合支持了更多的操作和方法,使得集合的用法更加灵活和方便。
2.3 集合的应用场景
集合的用途主要包括:
- 数据去重:集合中的元素唯一性保证了其中没有重复的数据,可以用于去重操作。
- 数据关联:集合可以用于比较、计算和处理数据之间的关联关系,比如求交集、并集、差集等。
- 数据筛选:集合可以根据一定的条件筛选数据,将符合条件的元素提取出来。
2.4 集合的使用方法
2.4.1 创建集合
我们可以通过以下几种方式创建集合:
(1)使用花括号创建空集合
my_set = set()
print(my_set) # 输出:set()
(2)使用set()
函数创建集合
my_set = set([1, 2, 3, 3, 4])
print(my_set) # 输出:{1, 2, 3, 4}
2.4.2 集合的基本操作
集合提供了一系列常用的操作,例如添加元素、删除元素、判断元素是否存在等等。
(1)添加元素
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 输出:{1, 2, 3, 4}
(2)删除元素
my_set = {1, 2, 3}
my_set.remove(2)
print(my_set) # 输出:{1, 3}
(3)判断元素是否存在
my_set = {1, 2, 3}
print(2 in my_set) # 输出:True
2.4.3 集合运算
集合可以进行交集、并集、差集等操作。
(1)交集
python
set1 = {1, 2, 3}
set2 = {2, 3, 4}
intersection = set1.intersection(set2)
print(intersection) # 输出:{2, 3}
(2)并集
set1 = {1, 2, 3}
set2 = {2, 3, 4}
union = set1.union(set2)
print(union) # 输出:{1, 2, 3, 4}
(3)差集
set1 = {1, 2, 3}
set2 = {2, 3, 4}
difference = set1.difference(set2)
print(difference) # 输出:{1}
(4)对称差集
set1 = {1, 2, 3}
set2 = {2, 3, 4}
symmetric_difference = set1.symmetric_difference(set2)
print(symmetric_difference) # 输出:{1, 4}
2.4.4 遍历集合
我们可以使用for
循环来遍历集合:
my_set = {1, 2, 3}
for item in my_set:
print(item)
# 输出:
# 1
# 2
# 3
2.4.5 集合方法
集合提供了一系列常用的方法,以下是一些常用的集合方法:
(1)add(element)
:向集合中添加元素
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 输出:{1, 2, 3, 4}
(2)remove(element)
:从集合中删除元素
my_set = {1, 2, 3}
my_set.remove(2)
print(my_set) # 输出:{1, 3}
(3)pop()
:随机删除并返回集合中的一个元素
my_set = {1, 2, 3}
item = my_set.pop()
print(my_set) # 输出:{2, 3}
print(item) # 输出:1
(4)clear()
:清空集合中的所有元素
my_set = {1, 2, 3}
my_set.clear()
print(my_set) # 输出:set()
(5)copy()
:复制集合
my_set = {1, 2, 3}
new_set = my_set.copy()
print(new_set) # 输出:{1, 2, 3}
2.5 集合的总结
集合是Python中常用的数据结构,具有以下几个特点和优势:
- 唯一性:集合中的元素是唯一的,可以用于去重操作,提高数据的质量和准确性。
- 无序性:集合中的元素没有明确的顺序,可以在不关心顺序的场景中快速进行查找和操作。
- 可变性:集合中的元素可以随时添加或删除,适用于动态的数据处理和关联操作。
- 高效性:集合中元素的唯一性和散列表的实现保证了集合的高效性和良好的性能。
总而言之,集合是Python中非常有用的数据结构之一,用于存储唯一元素和进行数据操作。随着Python的发展,集合在语法和性能上得到了不断的改进和优化,以适应不同的应用场景。熟练运用集合可以提高程序的效率和代码的可读性。
三、总结
字典和集合是Python中常用的数据结构。字典用于存储键-值对,可以通过键来访问对应的值,并支持添加、删除和更新元素。集合用于存储一组无序且唯一的元素,支持添加、删除、取交集、并集等操作。在实际编程中,不断熟悉和灵活运用字典和集合可以提高代码的效率和可读性。