十、Python字典
Python 字典是一种用于存储键值对的数据结构。每个键(key)都是唯一的,并且与一个值(value)相关联。字典是 Python 中非常强大和灵活的数据类型,常用于需要快速查找、插入和删除操作的场景。以下是一些关于 Python 字典的基本用法和示例:
1.创建字典
你可以使用花括号 {}
创建一个字典,或者使用 dict()
函数。
# 使用花括号创建字典 dic1 = {'name': 'Alice', 'age': 30, 'city': 'New York'} # 使用 dict() 函数创建字典 dic2 = dict(name='Bob', age=25, city='Los Angeles')
2.访问字典里的值
通过键可以访问字典中的值。
print(dic1['name']) # 输出: Alice print(dic2['age']) # 输出: 25
3.修改字典
通过键可以修改字典中的值。
dic1['age'] = 31 print(dic2) # 输出: {'name': 'Alice', 'age': 31, 'city': 'New York'}
4.删除字典里元素
使用 del
关键字或 pop()
方法可以删除字典中的键值对。
del dic1['city'] print(dic1) # 输出: {'name': 'Alice', 'age': 31, 'email': 'alice@example.com'} # 使用 pop() 方法 removed_value =dic1.pop('email') print(removed_value) # 输出: alice@example.com print(dic1) # 输出: {'name': 'Alice', 'age': 31}
5.字典键的特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
1.不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
mydic = {'Name': 'jack', 'Age': 27, 'Name': 'karen'} print (mydic['Name']) #输出:karen
2.键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
mydic1 = {97:"a",98:"b"} mydic2 = {"name":"karen","age":27} mydic3 = {['Name']: 'karen', 'Age': 27} print(mydic3[['Name']])#报错unhashable type: 'list'
6.字典常用API
- 操作列表的函数
序号 函数 描述 1 len(dict) 计算字典元素个数,即键的总数。 2 str(dict) 输出字典,可以打印的字符串表示。 3 type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。
- 字典的方法
序号 函数及描述 1 dict.clear()删除字典内所有元素 2 dict.copy()返回一个字典的浅复制 3 dict.fromkeys(seq)创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 4 dict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值 5 key in dict如果键在字典dict里返回true,否则返回false 6 dict.items()以列表返回一个视图对象 7 dict.keys()返回一个视图对象 8 dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default 9 dict.update(dict2)把字典dict2的键/值对更新到dict里 10 dict.values()返回一个视图对象 11 pop(key,default)删除字典 key(键)所对应的值,返回被删除的值。 12 popitem()返回并删除字典中的最后一对键和值。
十一、Python集合(set)
在Python中,集合(set)是一种基本的数据结构,用于存储不重复的元素。集合是一个无序的、不包含重复元素的集合类型。它支持数学上的集合操作,如并集、交集、差集和对称差集等。
1.创建集合
集合可以使用大括号 {}
创建,或者使用 set()
函数。
# 使用大括号创建集合 my_set = {1, 2, 3, 4} # 使用 set() 函数创建集合 my_set_2 = set([1, 2, 3, 4])
2.集合的基本操作
- 添加元素:使用
add()
方法。my_set.add(5) print(my_set) # 输出: {1, 2, 3, 4, 5}
- 删除元素:使用
remove()
方法(如果元素不存在会抛出KeyError
),或者使用discard()
方法(如果元素不存在不会抛出异常),或者使用pop方法对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。my_set.remove(3) print(my_set) # 输出: {1, 2, 4, 5} my_set.discard(6) # 不会抛出异常
- 清空集合:使用
clear()
方法。my_set.clear() print(my_set) # 输出: set()
- 检查元素:使用
in
关键字。print(2 in my_set) # 输出: False(假设 my_set 已经被清空)
3.集合的数学操作
- 并集:使用
|
运算符或union()
方法。set1 = {1, 2, 3} set2 = {3, 4, 5} print(set1 | set2) # 输出: {1, 2, 3, 4, 5} print(set1.union(set2)) # 输出: {1, 2, 3, 4, 5}
- 交集:使用
&
运算符或intersection()
方法。print(set1 & set2) # 输出: {3} print(set1.intersection(set2)) # 输出: {3}
- 差集:使用
-
运算符或difference()
方法。print(set1 - set2) # 输出: {1, 2} print(set1.difference(set2)) # 输出: {1, 2}
- 对称差集:使用
^
运算符或symmetric_difference()
方法。print(set1 ^ set2) # 输出: {1, 2, 4, 5} print(set1.symmetric_difference(set2)) # 输出: {1, 2, 4, 5}
4.集合内置方法完整API
方法 描述 add() 为集合添加元素 clear() 移除集合中的所有元素 copy() 拷贝一个集合 difference() 返回多个集合的差集 difference_update() 移除集合中的元素,该元素在指定的集合也存在。 discard() 删除集合中指定的元素 intersection() 返回集合的交集 intersection_update() 返回集合的交集。 isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 issubset() 判断指定集合是否为该方法参数集合的子集。 issuperset() 判断该方法的参数集合是否为指定集合的子集 pop() 随机移除元素 remove() 移除指定元素 symmetric_difference() 返回两个集合中不重复的元素集合。 symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 union() 返回两个集合的并集 update() 给集合添加元素 len() 计算集合元素个数