字典
字典里面的数据是以键值对形式出现的,字典数据和数据顺序没有关系,即字典不支持下标,后期无论数据如何变化,只需要按照对应的键的名字查找数据即可。
定义形式
字典是可变数据类型。
# 字典的定义形式
dict = {key1: value1, key2: value2, ......}
# 有数据字典
dict1 = {"name": "Tom", "age": 20, "sex": "男"}
# 空字典形式1
dict2 = {}
# 空字典形式2
dict3 = dict()
字典的常见操作
新增
# 语法形式:
字典序列[key] = 值
其中:
1. 如果key存在,则修改这个key对应的值;
2. 如果key不存在,则在字典中新增此键值对。
# 示例:
dict1 = {"name": "Tom", "age": 20, "sex": "男"}
# key存在的情况
dict1["age"] = 21
print(dict1) # {'name': 'Tom', 'age': 21, 'sex': '男'}
# key不存在的情况
dict1["id"] = 110
print(dict1) # {'name': 'Tom', 'age': 21, 'sex': '男', 'id': 110}
删除
del
删除字典或字典中指定的键值对。
dict1 = {"name": "Tom", "age": 20, "sex": "男"}
# 删除指定的键值对
del dict1["name"]
print(dict1) # {'age': 20, 'sex': '男'}
# 删除整个字典
del dict1
print(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")) # Tom
print(dict1.get("names")) # None
print(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 sex
print()
遍历字典的value
dict1 = {"name": "Tom", "age": 20, "sex": "男"}
for value in dict1.values(): # 遍历的是dict1.values
print(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)) # set
print(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`
**判断数据不在集合序列**。
```python
s1 = {10, 20, 30}
if 1 not in s1:
print("恭喜答对了!") # 执行
else:
print("再接再厉!")