09字典(dict)与集合(set)
字典(dict)与集合(set)
字典的格式
- dict_data =
- 1)符号以大括号表示
- 2)数据是以键值对出现的,键值中间用冒号连接
- 3)key的数据必须是不可变类型,key是不重复的
- 字典是可变数据类型
- 空字典 dict_data = {}或dict_data = dict()
- 手动方式创建
# 有数据字典
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
注意:⼀般称冒号前⾯的为键(key),简称k;冒号后⾯的为值(value),简称v。
- 使用内置函数dict()创建
a_dict = dict(name='DYX', age=24) # 键=值对
print(a_dict) # {'age': 24, 'name': 'DYX'}
字典的常规操作
字典没有索引,是无序的
字典可以根据key获取value
dict_data = {"小明": 20, "小芳": {"age": 18, "gender": "女"}}
print(dict_data["小芳"]) # {'age': 18, 'gender': '女'}
print(dict_data["小芳"]["gender"]) # 女
增加数据
dict_data = {"小明": 20}
dict_data["小芳"] = 18
print(dict_data) # {'小明': 20, '小芳': 18}
字典修改
dict_data = {"小明": 20}
dict_data["小明"] = {"age": 18, "gender": "男"}
print(dict_data) # {'小明': {'age': 18, 'gender': '男'}}
字典删除
dict_data = {"小明": 20}
del dict_data["小明"]
print(dict_data) # {}
常用方法
方法 | 描述 |
---|---|
get() | 获取一个数据,如果存在则返回其value,不存在则返回None |
pop() | 删除指定key的数据 |
popitem() | 删除字典的最后一个数据 |
update() | 更新数据 |
keys() | 获取字典是所有key,存放在以地dict_key对象里面 |
values() | 获取字典中所有的value |
items() | 以列表返回可遍历的(键值)元组数组 |
clear() | 清空字典中的数据 |
copy() | 复制字典 |
# get() 获取一个数据,如果存在则返回其value,不存在则返回None
# None是可以改变的,当不存在时返回这个位置的数据,默认为None
dict_data = {"小明": 20}
print(dict_data.get("小明")) # 20
# dict_data.get("小明", None)
print(dict_data.get("小明1")) # None
# 修改None
print(dict_data.get("小明1", False)) # False
# pop() 删除指定key的数据
dict_data = {"小明": 20}
dict_data.pop("小明")
print(dict_data) # {}
# popitem() 删除字典的最后一个数据
dict_data = {"小明": 20, "小芳": 18}
dict_data.popitem()
print(dict_data) # {'小明': 20}
# update() 更新数据
dict_data = {"小明": 20, "小芳": 18}
dict_data.update({"小刚": 19, "小李": 21})
print(dict_data) # {'小明': 20, '小芳': 18, '小刚': 19, '小李': 21}
# keys() 获取字典是所有key,存放在以地dict_key对象里面
dict_data = {"小明": 20, "小芳": 18}
print(dict_data.keys()) # dict_keys(['小明', '小芳'])
print(type(dict_data.keys())) # <class 'dict_keys'>
# values() 获取字典中所有的value
dict_data = {"小明": 20, "小芳": 18}
print(dict_data.values()) # dict_values([20, 18])
# items() 以列表返回可遍历的(键值)元组数组
dict_data = {"小明": 20, "小芳": 18}
print(dict_data.items()) # dict_items([('小明', 20), ('小芳', 18)])
补充:压缩和解包
# 压缩 压缩数据到一个变量里面,以元组的方式存储
a = "小明", 18
print(a) # ('小明', 18)
# 解包
name, age = a
print(name, age) # 小明 18
dict_data = {"小明": 20, "小芳": 18}
print(dict_data.items()) # dict_items([('小明', 20), ('小芳', 18)])
for i in dict_data.items():
print(i)
# ('小明', 20)
# ('小芳', 18)
# for i in dict_data.items():
# print(i[0], i[1])
for name, age in dict_data.items():
print(name, age)
# 小明 20
# 小芳 18
# 后面这两种方式输出结果一样,但推荐使用第二种解包的方式,这样变量有更明确的描述,方便使用
字典的循环遍历
# 遍历字典(不支持while循环)
# 方式1:通过获取到全部的key来完成遍历
for key in 字典.keys():
print(f"字典的key是:{key}")
print(f"字典的value是:{字典[key]}")
# 方式2:直接对字典进行for循环,每一次循环都是直接得到key
for key in 字典:
print(f"字典的key是:{key}")
print(f"字典的value是:{字典[key]}")
集合的格式
- set_data =
- 无序且唯一(数据不重复)
- 集合没有索引和key,故集合不能修改数据
集合的常规操作
# 定义空集合
my_set_empty = set()
特点:不能重复,且无序
注意:不支持下标索引访问
# 添加新元素
语法:集合.add(元素)
# 删除数据
语法:集合.remove(元素)
# 随机取出元素pop
语法:集合.pop()
# 取出两个集合的差集
语法:集合1.difference(集合2)
功能:取出集合1和集合2的差集(集合1有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变
# 消除2个集合的交集
语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。
结果:集合1被修改,集合2不变
# 集合的合并
语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
结果:得到新集合,集合1和集合2不变
# 集合的遍历
注意:集合不支持下标,不能用while循环,可以用for循环
本文来自博客园,作者:大-锅,转载请注明原文链接:https://www.cnblogs.com/dgxz99/p/17311358.html