字典
字典里面的数据是以键值对形式出现的,字典数据和数据顺序没有关系,即字典不支持下标,后期无论数据如何变化,只需要按照对应的键的名字查找数据即可。
定义形式
字典是可变数据类型。
# 字典的定义形式dict = {key1: value1, key2: value2, ......}
# 有数据字典dict1 = {"name": "Tom", "age": 20, "sex": "男"}# 空字典形式1dict2 = {}# 空字典形式2dict3 = dict()
字典的常见操作
新增
# 语法形式:字典序列[key] = 值其中:1. 如果key存在,则修改这个key对应的值;2. 如果key不存在,则在字典中新增此键值对。
# 示例:dict1 = {"name": "Tom", "age": 20, "sex": "男"}# key存在的情况dict1["age"] = 21print(dict1) # {'name': 'Tom', 'age': 21, 'sex': '男'}# key不存在的情况dict1["id"] = 110print(dict1) # {'name': 'Tom', 'age': 21, 'sex': '男', 'id': 110}
删除
del
删除字典或字典中指定的键值对。
dict1 = {"name": "Tom", "age": 20, "sex": "男"}# 删除指定的键值对del dict1["name"]print(dict1) # {'age': 20, 'sex': '男'}# 删除整个字典del dict1print(dict1) # error
clear()
清空字典。
dict1 = {"name": "Tom", "age": 20, "sex": "男"}dict1.clear()print(dict1) # {}
修改
和新增形式一样,当**key**存在时,就完成了字典的修改。
# 语法形式:字典序列[key] = 值其中:1. 如果key存在,则修改这个key对应的值;2. 如果key不存在,则在字典中新增此键值对。
查找
key值查找
- 当查找的key存在,返回对应的值;
- 否则报错。 ```python dict1 = {“name”: “Tom”, “age”: 20, “sex”: “男”}
print(dict1[“name”]) # Tom print(dict1[“id”]) # key error
<a name="py2Ui"></a>#### `get()`- **当**`**key**`**存在时,返回**`**key**`**对应的值;**- **当查找的**`**key**`**不存在,返回第二个参数(默认值);若省略了第二个参数,则返回**`**None**`。```python字典序列.get(key,默认值)# 示例:dict1 = {"name": "Tom", "age": 20, "sex": "男"}print(dict1.get("name")) # Tomprint(dict1.get("names")) # Noneprint(dict1.get("names", "This key is not found!")) # This key is not found!
keys()
获取字典中的所有**key**值,返回的是一个可迭代的对象(可被for循环遍历)(列表类型)。
dict1 = {"name": "Tom", "age": 20, "sex": "男"}print(dict1.keys()) # dict_keys(['name', 'age', 'sex'])
values()
获取字典中的所有**value**值,返回的是一个可迭代的对象(列表类型)。
dict1 = {"name": "Tom", "age": 20, "sex": "男"}print(dict1.values()) # dict_values(['Tom', 20, '男'])
items()
获取字典中的所有键值对,返回的是一个可迭代对象(元组类型)。
dict1 = {"name": "Tom", "age": 20, "sex": "男"}print(dict1.items()) # dict_items([('name', 'Tom'), ('age', 20), ('sex', '男')])print(type(dict1.items()))
字典的循环遍历
遍历字典的key
dict1 = {"name": "Tom", "age": 20, "sex": "男"}for key in dict1.keys(): # 遍历的是dict1.keys()print(key, end="\t") # name age sexprint()
遍历字典的value
dict1 = {"name": "Tom", "age": 20, "sex": "男"}for value in dict1.values(): # 遍历的是dict1.valuesprint(value, end="\t") # Tom 20 男print()
遍历字典的元素
dict1 = {"name": "Tom", "age": 20, "sex": "男"}for item in dict1.items():print(item, end="\t") # ('name', 'Tom') ('age', 20) ('sex', '男')print()
遍历字典的键值对(拆包)
dict1 = {"name": "Tom", "age": 20, "sex": "男"}for key, value in dict1.items():print(f"{key}={value}", end="\t") # name=Tom age=20 sex=男print()
集合
- 集合里面的数据不允许重复,所以集合的作用之一是对数据进行去重处理;
- 集合内的数据没有顺序之分,不可使用下标;
- 集合是可变数据类型。
创建集合
创建集合使用**{}**或**set()**,但如果要创建空集合只能使用**set()**,因为{}用来创建字典。# 创建非空集合s1 = {10, 20, 30, 40, 40, 50}s2 = set("abcdef")# 创建空集合s3 = set()# 创建空字典s4 = {}print(s1) # {50, 20, 40, 10, 30}print(s2) # {'e', 'd', 'f', 'c', 'b', 'a'}print(type(s3)) # setprint(type(s4)) # dict
集合的常见操作
增加操作
因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有的数据,则不进行任何操作。add()s1 = {10, 20, 30}s1.add(40)s1.add(10)print(s1) # {40, 10, 20, 30}
以数据序列(字符串、列表和元组等)的方式向集合中追加数据。update()s1 = {10, 20}s1.update("12")print(s1) # {10, '2', 20, '1'}s1.update([3, 4])print(s1) # {3, 4, '1', 10, '2', 20}
删除操作
删除集合中的指定数据,如果数据不存在则报错。remove()s1 = {10, 20}s1.remove(10)print(s1) # {20}s1.remove(10) # {10}已不存在print(s1) # error
删除集合中的指定数据,如果不存在也不会报错。discard()s1 = {10, 20}s1.discard(10)print(s1) # {20}s1.discard(10) # {10}已不存在print(s1) # {20}
随机删除集合中的某个数据,并返回这个数据。pop()s1 = {10, 20, 30}temp = s1.pop() # 伪随机删除----每次运行都删除固定数据print(temp)
查找操作
判断数据在集合序列。 ```python s1 = {10, 20, 30}in
if 10 in s1: print(“恭喜答对了!”) # 执行 else: print(“再接再厉!”)
<a name="mqB2c"></a>#### `not in`**判断数据不在集合序列**。```pythons1 = {10, 20, 30}if 1 not in s1:print("恭喜答对了!") # 执行else:print("再接再厉!")
