09字典(dict)与集合(set)

发布时间 2023-04-12 21:32:39作者: 大-锅

字典(dict)与集合(set)

字典的格式

>- dict_data = { key : value , key1 : value1 }
>- 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循环
```</class>