字典是一种键值对的数据结构,而集合是一种无序、元素不重复的数据结构。
目录
4.1 字典[键名] = 值:键名存在就修改字典,键名不存在则新增一个键值对
4.2 字典.update({键值对}) 用于添加一个或多个键值对,或者说是字典的拼接直接添加字典
6、成员运算符 in 和 not in ,判断某个元素的是否是字典的key
3.1 集合.remove 删除指定的元素,如果集合有就会删除,没有会报错
3.2 集合.discard() 删除指定元素,有就删除,没有不会发生任何改变
2、并集/合集 |:a|b 输出集合a和集合b中包含的所有元素
3、差集 -:a-b 输出集合a中包含而集合b中不包含的元素
前言
字典(Dictionary)通常用于需要根据某个唯一标识(键)来检索相关数据(值)的情况,例如存储用户信息、配置项等。
集合(Set)则常用于存储一组唯一的元素,可以用于去除重复元素、快速查找是否存在某个元素等场景,比如统计唯一单词数、过滤重复数据等。
正文
一、字典(dict)
1、字典的定义
作用:用于存储多个数据,每一个数据都又唯一的键(key)进行对应,不支持下标操作,是可迭代对象
格式:{"键名1":"值1","键名2":"值2","键名3":"值3".....} 由键值对组成
注意:
1)、字典的key不可以是列表、字典、集合等可变类型,只能是字符串、数值、元组等不可变类型,但是值可以是任意类型
2)、字典的key具备唯一,在字典里key不能被重复,如果重复那后面的值,会覆盖前面的值
3)、字典可以增删改查,是可变类型,但是字典的无序性的,不存在索引的概念
# 字典的key不可以是列表、字典、集合等可变类型
# 只能是字符串、数值、元组等不可变类型,但是值可以是任意类型
user = {'key': [1, 2, 3], 1: {'a': 1, 'b': 2}, (1, 2): 'abc'}
print(user) # {'key': [1, 2, 3], 1: {'a': 1, 'b': 2}, (1, 2): 'abc'}
# dic = {[1, 2]: 'abc'} # TypeError: unhashable type: 'list' 报错 列表不能做key
# 字典的key具备唯一,在字典里key不能被重复,如果重复那后面的值,会覆盖前面的值
dic1 = {'name': '写代码也摆烂', 'age': 18, 'name': '加油写代码啊!'}
print(dic1)
字典和集合散列类型,字符串、列表、元组序列类型
2、字典的查询
前面我们学的查,都是通过索引,来进行查找某个值,字典不同,他是通过key来查询
2.1 语法:字典名['键名']
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic['name']) # 输出:写代码也摆烂
# 这里只能写键名,如果写值或者其他的值,会直接报错
print(dic['写代码也摆烂']) # 报错 KeyError: '写代码也摆烂'
2.2 语法:字典名.get('键名')
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic.get('name')) # 输出:写代码也摆烂
# 这里可以这里的键名可以随便写,如果有对应的值,返回该值,如果没有则返回None
print(dic.get('写代码也摆烂')) # 没有找到该键名返回 None
3、删除
3.1 del删除指定键值对
dic = {'name': '写代码也摆烂', 'age': 18}
del dic['name'] # 删除键为name的键值对
print(dic) # {'age': 18}
# 需要注意不能对没有的进行删除
del dic['name'] # 因为上面删除了所有已经没有name了 直接报错:KeyError: 'name'
3.2 pop根据指定key删除键值对
在列表中pop用于索引删除,不知道默认删除最后一个元素
dic = {'name': '写代码也摆烂', 'age': 18}
dic.pop('name') # 删除键为name的键值对
print(dic) # {'age': 18}
# 需要注意不能对没有的进行删除
dic.pop('name') # 因为上面删除了所有已经没有name了 直接报错:KeyError: 'name'
3.3 clear清除字典里所有键值对,返回一个空字典
dic = {'name': '写代码也摆烂', 'age': 18}
dic.clear()
print(dic) # {}
4、改/增字典
4.1 字典[键名] = 值:键名存在就修改字典,键名不存在则新增一个键值对
注意键名不能直接修改
dic = {'name': '写代码也摆烂', 'age': 18}
dic['age'] = 20 # 有age这个键则修改age的值
print(dic) # 输出:{'name': '写代码也摆烂', 'age': 20}
dic['sex'] = 'man' # 没有该键,则新增一个键值对
print(dic) # 输出:{'name': '写代码也摆烂', 'age': 20, 'sex': 'man'}
4.2 字典.update({键值对}) 用于添加一个或多个键值对,或者说是字典的拼接直接添加字典
dic = {'name': '写代码也摆烂', 'age': 18}
dic.update({'sex': 'man'}) # 添加一个或多个键值对,或者说添加一个字典
print(dic) # {'name': '写代码也摆烂', 'age': 18, 'sex': 'man'}
dic1 = {'写代码': '摆烂'}
dic.update(dic1)
print(dic) # {'name': '写代码也摆烂', 'age': 18, 'sex': 'man', '写代码': '摆烂'}
5、字典的长度len返回有多少对键值对
dic = {'name': '写代码也摆烂', 'age': 18}
print(len(dic)) # 2
6、成员运算符 in 和 not in ,判断某个元素的是否是字典的key
dic = {'name': '写代码也摆烂', 'age': 18}
print('name' in dic) # True
print('写代码也摆烂' in dic) # False
7、获取字典的键或值
7.1 keys/values 分别获取键/值进行返回
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic.keys()) # 返回所有的键 dict_keys(['name', 'age'])
print(dic.values()) # 返回所有的值 dict_values(['写代码也摆烂', 18])
print(list(dic.keys())) # 返回所有键的列表 ['name', 'age']
print(list(dic.values())) # 返回所有值的列表 ['写代码也摆烂', 18]
7.2 字典.items() 同时获取键和值
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic.items()) # dict_items([('name', '写代码也摆烂'), ('age', 18)]) 返回特殊类型
for i, j in dic.items():
print(i, j)
二、集合
1、集合定义
作用:集合用于存储一组唯一的元素,常用于去除重复元素、快速查找是否存在某个元素等操作,无序,是可迭代对象
格式:{数据1,数据2,数据3....数据n}
定义:set()/{数据1,数据2}
# 定义集合
s1 = {1, 2, 3}
s2 = set([4, 5, 6])
print(s1, type(s1)) # {1, 2, 3} <class 'set'>
print(s2, type(s2)) # {4, 5, 6} <class 'set'>
# 定义空集合,需要注意必须使用set来创建
s3 = {} # 这是创建空字典
s4 = set() # 这是创建集合
print(s3, type(s3)) # {} <class 'dict'>
print(s4, type(s4)) # set() <class 'set'>
注意:
1)定义空集合必须使用set来定义
2)集合元素必须是不可变类型(如列表 字典 集合会报错)
3)元素的唯一性,在集合里是没有重复的元素的,会自动去重
4)元素的无序性,集合的元素是没有顺序的,意味着集合是没有索引的,所以没有修改和查询操作
# s = {1, 2, 3, [1, 2]} # 报错 TypeError: unhashable type: 'list'
s = {1, 2, 3, 4, 4, 3, 4, 2, 3, 4} # 重复值会自动掉,只剩一个
print(s) # {1, 2, 3, 4}
s1 = {1, 2, 3, 'a', 'c', (1, 3)}
print(s1)
# 无序性 每次输出都会发生不同的变化
# 1 {1, 2, 3, 'c', 'a', (1, 3)}
# 2 {1, 2, 3, 'c', (1, 3), 'a'}
# 3 {1, 2, 3, 'a', 'c', (1, 3)}
2、增加
2.1 集合.add(元素) 添加元素,整体添加
s = {1, 2, 3, 4, 5}
s.add(6)
print(s) # {1,2,3,4,5,6}
# 如果添加重复的元素也会被去重
s.add(5)
print(s) # {1,2,3,4,5,6}
# 整体添加
s.add('abc')
print(s) # {1, 2, 3, 4, 5, 6, 'abc'} 直接将一整个字符串'abc'添加进去
2.2 集合.update(可迭代对象) 分散添加
s = {1, 2, 3, 4, 5}
s.update('abc')
#分散添加
print(s) # {1, 2, 3, 4, 5, 'a', 'b', 'c'}
# 将'abc'拆开来添加进去了
3、删除集合
3.1 集合.remove 删除指定的元素,如果集合有就会删除,没有会报错
s = {1, 2, 3, 4, 5}
s.remove(1)
print(s) # {2, 3, 4, 5}
s.remove(0) # KeyError: 0
3.2 集合.discard() 删除指定元素,有就删除,没有不会发生任何改变
s = {1, 2, 3, 4, 5}
s.discard(1)
print(s) # {2, 3, 4, 5}
s.discard(0) # 没有需要删除的,不发生任何改变
print(s)
4、求集合的长度len()
s = {1, 2, 3, 4, 5}
print(len(s)) # 5
5、成员运算符in和not in
s = {1, 2, 3, 4, 5}
print(1 in s) # True
6、集合的关系运算符
1、交集 &:a&b 输出集合a和集合b中都包含的元素
2、并集/合集 |:a|b 输出集合a和集合b中包含的所有元素
3、差集 -:a-b 输出集合a中包含而集合b中不包含的元素
a = {1, 2, 3, 4, 5, 6}
b = {2, 4, 6, 8}
print(a & b) # {2, 4, 6}
print(a | b) # {1, 2, 3, 4, 5, 6, 8}
print(a - b) # {1, 3, 5}
总结
字典还是比较方便的,集合的话用的少。
欢迎指正!
标签:Set,name,Dictionary,python,dic,集合,摆烂,print,字典 From: https://blog.csdn.net/w3360701048/article/details/137227560