上篇:Python基础知识(四):列表,元组
目录
字典dict
以键值对形式存在
语法
有数据的
dict1 = {"name": "haha", "age": 18, "gender": "男"}
空字典
dict2 = {}
# 或
dict3 = dict()
新增与修改
key不存则新增,存在则修改值
dict1 = {"name": "haha", "age": 18, "gender": "男"}
# 新增
dict1["id"] = 1001
print(dict1) # {'name': 'haha', 'age': 18, 'gender': '男', 'id': 1001}
# 修改
dict1["id"] = 1002
print(dict1) # {'name': 'haha', 'age': 18, 'gender': '男', 'id': 1002}
删除
dict1 = {"name": "haha", "age": 18, "gender": "男"}
# 删除字典
# del(dict1)
# 删除键值对
del(dict1["name"]) # 如果不存在则报错
print(dict1)
查找
key值查找
如果key值不存在则报错
dict1 = {"name": "haha", "age": 18, "gender": "男"}
print(dict1["name"]) # haha
get()
如果不存在则返回默认值
dict1 = {"name": "haha", "age": 18, "gender": "男"}
print(dict1.get("name", "123")) # haha 存在则返回值
print(dict1.get("name1", "123")) # 123 不存在则返回默认值
keys()
查找字典中所有的key,返回可迭代对象
dict1 = {"name": "haha", "age": 18, "gender": "男"}
print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])
# 遍历
for i in dict1.keys():
print(f"{i}:{dict1[i]}")
效果
values()
查找字典中所有的value,返回可迭代对象
dict1 = {"name": "haha", "age": 18, "gender": "男"}
print(dict1.values()) # dict_values(['haha', 18, '男'])
# 遍历
for i in dict1.values():
print(i)
效果
items()
查找字典中所有的键值对,返回可迭代对象,里面的数据是元组,元组数据1是字典的key,元组数据2是字典key对应的值
dict1 = {"name": "haha", "age": 18, "gender": "男"}
print(dict1.items()) # dict_items([('name', 'haha'), ('age', 18), ('gender', '男')])
# 遍历
for i in dict1.items():
print(f"{i[0]}:{i[1]}")
# 或
for key, value in dict1.items():
print(f"{key}:{value}")
效果
集合set
创建集合使用{}或set{},但是如果创建空集合只能使用set{},因为{}用来创建空字典
集合的数据没有顺序
set1 = {10, 20, 30, 40, 50}
print(set1) # {40, 10, 50, 20, 30} 没有顺序
set2 = {10, 20, 30, 40, 50, 10}
print(set2) # {40, 10, 50, 20, 30} 去除了重复值
set3 = set("abcdef")
print(set3) # {'e', 'b', 'f', 'd', 'c', 'a'}
set4 = set()
print(set4)
print(type(set4)) # <class 'set'> 这样创建出来才是集合
set5 = {}
print(set5)
print(type(set5)) # <class 'dict'> 这样创建出来是字典
添加数据
add()
因为集合有去重功能,所以,当向集合追加的数据是当前集合已有数据的话,则不进行任何操作
set1 = {10, 20, 30, 40, 50}
set1.add(66)
print(set1) # {66, 40, 10, 50, 20, 30}
set1.add(66) # 已存在,不再添加
print(set1) # {66, 40, 10, 50, 20, 30}
update()
追加的数据是序列
set1 = {10, 20, 30, 40, 50}
set1.update([66, 77])
print(set1) # {66, 40, 10, 77, 50, 20, 30}
注意,update()方法追加的必须是一个序列,否则会报错,add()方法不能追加序列,否则会报错
删除数据
remove()
删除集合中的指定数据,如果数据不存在则报错
set1 = {10, 20, 30, 40, 50}
set1.remove(10)
print(set1) # {40, 50, 20, 30}
set.remove(66) # 66 这个数据不存在,报错
discard()
删除集合中的指定数据,如果数据不存在也不会报错
set1 = {10, 20, 30, 40, 50}
set1.discard(10)
print(set1) # {40, 50, 20, 30}
set1.discard(66) # 66 这个数据不存在,不会报错
pop()
随机删除集合中的某个数据,并返回这个数据
set1 = {10, 20, 30, 40, 50}
print(set1.pop()) # 40
print(set1) # {10, 50, 20, 30}
查找
in
判断数据在集合序列
not in
判断数据不在集合序列
set1 = {10, 20, 30, 40, 50}
print(10 in set1) # True
print(10 not in set1) # False