dic字典
dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
字典的创建使用大括号 {} 包含键值对,并用冒号 : 分隔键和值,形成 键:值 对。
字典的特性
- 唯一键:字典中的每个键都必须是唯一的。值可以取任何数据类型,如字符串,数字,元组。
- 无序(Python 3.6 之前的版本):在 Python 3.6 之前的版本中,字典是无序的。但从 Python 3.7 开始,字典保持插入顺序。
- 可变:字典是可变的,可以添加、删除或修改键值对。
- 内置方法:字典提供了许多内置方法,如
get()
,update()
,clear()
等,用于执行各种操作。
字典的基本操作
创建字典
可以使用花括号 {}
创建一个字典,并用冒号 :
分隔键和值,用逗号 ,
分隔键值对。
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
访问字典中的值
使用键来访问字典中的值。
print(my_dict['name']) # 输出: John
为什么dict查找速度这么快?
因为dict的实现原理和查字典是一样的。
假设字典包含了1万个汉字,需要在其中查询某一个字
第一种方式是把字典从第一页往后翻,直到找到所需的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。
第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢,dict字典就是该种方式。
添加或修改键值对
如果键已存在,则更新其值;如果键不存在,则添加新的键值对。
my_dict['age'] = 31 # 修改
my_dict['job'] = 'Engineer' # 添加
删除键值对
使用 del
语句或 pop()
方法删除键值对。
del my_dict['city'] # 删除键值对
job = my_dict.pop('job', 'Not found') # 删除并返回'job'的值,如果'job'不存在则返回'Not found'
检查键是否存在
使用 in
关键字检查键是否存在于字典中。
if 'name' in my_dict:
print("Key exists")
一些字典中的方法
dict_a = {1: 2, 2: 3, True: False, "a": "b", (1, 2): [3, 4]}
print(dict_a.keys()) # 返回所有的key
# 输出:dict_keys([1, 2, 'a', (1, 2)])
print(dict_a.values()) # 返回所有的value
# 输出:dict_values([False, 3, 'b', [3, 4]])
# item 将键值对以二元组的形式返回出来
print(dict_a.items())
# 输出:dict_items([(1, False), (2, 3), ('a', 'b'), ((1, 2), [3, 4])])
# get:通过key获取value,还可以指定当key不存在时返回一个默认值
print(dict_a.get("a", "没有这个键")) # 输出:b
print(dict_a.get("c", "没有这个键")) # 输出:没有这个键
# popitem 弹出一个键值对,弹出后字典中就没有了
print(dict_a.popitem()) # 输出:((1, 2), [3, 4])
print(dict_a) # 输出:{1: False, 2: 3, 'a': 'b'}
# clear:清空字典
print(dict_a.clear()) # 输出:None
set集合
在Python中,set
是一个无序的、不包含重复元素的数据集合。它主要用于进行数学上的集合操作,如并集、交集、差集和对称差集等。set
集合可以用来快速地进行成员关系测试和删除重复元素。
创建集合
你可以使用大括号 {}
或者 set()
函数来创建集合。但是,请注意,当你使用大括号 {}
时,如果里面没有任何元素,Python 会将其解释为一个空字典,而不是空集合。因此,为了创建一个空集合,你应该使用 set()
。
# 使用大括号创建集合
my_set = {1, 2, 3, 4}
# 使用 set() 函数创建集合
another_set = set([1, 2, 3, 4])
# 创建一个空集合
empty_set = set()
集合操作
集合支持多种操作,包括但不限于:
- 并集 (
|
或union()
):返回两个集合的并集,即包含所有不重复的元素。 - 交集 (
&
或intersection()
):返回两个集合的交集,即两个集合中都有的元素。 - 差集 (
-
或difference()
):返回集合的差集,即存在于第一个集合中但不在第二个集合中的所有元素。 - 对称差集 (
^
或symmetric_difference()
):返回两个集合的对称差集,即存在于一个集合中但不同时存在于两个集合中的所有元素。
# 并集
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1 | set2 # 或 set1.union(set2)
print(union_set) # 输出: {1, 2, 3, 4, 5}
# 交集
intersection_set = set1 & set2 # 或 set1.intersection(set2)
print(intersection_set) # 输出: {3}
# 差集
difference_set = set1 - set2 # 或 set1.difference(set2)
print(difference_set) # 输出: {1, 2}
# 对称差集
symmetric_difference_set = set1 ^ set2 # 或 set1.symmetric_difference(set2)
print(symmetric_difference_set) # 输出: {1, 2, 4, 5}
集合的方法
set
类型提供了许多内置方法来执行常见的集合操作,比如添加元素 (add()
)、删除元素 (remove()
或 discard()
)、检查元素是否存在 (in
关键字)、更新集合 (update()
)、清空集合 (clear()
)、计算集合的长度 (len()
函数) 等。
my_set = {1, 2, 3}
# 添加元素
my_set.add(4)
print(my_set) # 输出: {1, 2, 3, 4}
# 删除元素
my_set.remove(2) # 如果元素不存在,会抛出 KeyError
# 或者使用 discard(),如果元素不存在,不会抛出异常
my_set.discard(5)
print(my_set) # 输出: {1, 3, 4}
# 检查元素是否存在
if 3 in my_set:
print("3 is in the set")
# 更新集合
my_set.update([3, 4, 5, 6]) # 注意:这不会添加重复元素
print(my_set) # 输出: {1, 3, 4, 6}
# 清空集合
my_set.clear()
print(my_set) # 输出: set()
# 计算集合的长度
print(len(my_set)) # 输出: 0
# 补充
# pop:随机移除一个元素,因为set集合是无序的
set_d = {4, 5, 6, 7, 8, 9}
print(set_d.pop())
print(set_d)
标签:set,Python,集合,dict,print,my,字典
From: https://blog.csdn.net/weixin_73504499/article/details/140395476