字典

字典里面的数据是以键值对形式出现的,字典数据和数据顺序没有关系,即字典不支持下标,后期无论数据如何变化,只需要按照对应的键的名字查找数据即可

定义形式

字典是可变数据类型

  1. # 字典的定义形式
  2. dict = {key1: value1, key2: value2, ......}
  1. # 有数据字典
  2. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  3. # 空字典形式1
  4. dict2 = {}
  5. # 空字典形式2
  6. dict3 = dict()

字典的常见操作

新增

  1. # 语法形式:
  2. 字典序列[key] =
  3. 其中:
  4. 1. 如果key存在,则修改这个key对应的值;
  5. 2. 如果key不存在,则在字典中新增此键值对。
  1. # 示例:
  2. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  3. # key存在的情况
  4. dict1["age"] = 21
  5. print(dict1) # {'name': 'Tom', 'age': 21, 'sex': '男'}
  6. # key不存在的情况
  7. dict1["id"] = 110
  8. print(dict1) # {'name': 'Tom', 'age': 21, 'sex': '男', 'id': 110}

删除

del

删除字典或字典中指定的键值对

  1. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  2. # 删除指定的键值对
  3. del dict1["name"]
  4. print(dict1) # {'age': 20, 'sex': '男'}
  5. # 删除整个字典
  6. del dict1
  7. print(dict1) # error

clear()

清空字典

  1. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  2. dict1.clear()
  3. print(dict1) # {}

修改

和新增形式一样,当**key**存在时,就完成了字典的修改

  1. # 语法形式:
  2. 字典序列[key] =
  3. 其中:
  4. 1. 如果key存在,则修改这个key对应的值;
  5. 2. 如果key不存在,则在字典中新增此键值对。

查找

key值查找

  • 当查找的key存在,返回对应的值;
  • 否则报错。 ```python dict1 = {“name”: “Tom”, “age”: 20, “sex”: “男”}

print(dict1[“name”]) # Tom print(dict1[“id”]) # key error

  1. <a name="py2Ui"></a>
  2. #### `get()`
  3. - **当**`**key**`**存在时,返回**`**key**`**对应的值;**
  4. - **当查找的**`**key**`**不存在,返回第二个参数(默认值);若省略了第二个参数,则返回**`**None**`。
  5. ```python
  6. 字典序列.get(key,默认值)
  7. # 示例:
  8. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  9. print(dict1.get("name")) # Tom
  10. print(dict1.get("names")) # None
  11. print(dict1.get("names", "This key is not found!")) # This key is not found!

keys()

获取字典中的所有**key**值,返回的是一个可迭代的对象(可被for循环遍历)(列表类型)

  1. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  2. print(dict1.keys()) # dict_keys(['name', 'age', 'sex'])

values()

获取字典中的所有**value**值,返回的是一个可迭代的对象(列表类型)

  1. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  2. print(dict1.values()) # dict_values(['Tom', 20, '男'])

items()

获取字典中的所有键值对,返回的是一个可迭代对象(元组类型)

  1. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  2. print(dict1.items()) # dict_items([('name', 'Tom'), ('age', 20), ('sex', '男')])
  3. print(type(dict1.items()))

字典的循环遍历

遍历字典的key

  1. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  2. for key in dict1.keys(): # 遍历的是dict1.keys()
  3. print(key, end="\t") # name age sex
  4. print()

遍历字典的value

  1. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  2. for value in dict1.values(): # 遍历的是dict1.values
  3. print(value, end="\t") # Tom 20 男
  4. print()

遍历字典的元素

  1. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  2. for item in dict1.items():
  3. print(item, end="\t") # ('name', 'Tom') ('age', 20) ('sex', '男')
  4. print()

遍历字典的键值对(拆包)

  1. dict1 = {"name": "Tom", "age": 20, "sex": "男"}
  2. for key, value in dict1.items():
  3. print(f"{key}={value}", end="\t") # name=Tom age=20 sex=男
  4. print()

集合

  • 集合里面的数据不允许重复,所以集合的作用之一是对数据进行去重处理;
  • 集合内的数据没有顺序之分,不可使用下标;
  • 集合是可变数据类型

    创建集合

    创建集合使用**{}****set()**,但如果要创建空集合只能使用**set()**,因为{}用来创建字典。
    1. # 创建非空集合
    2. s1 = {10, 20, 30, 40, 40, 50}
    3. s2 = set("abcdef")
    4. # 创建空集合
    5. s3 = set()
    6. # 创建空字典
    7. s4 = {}
    8. print(s1) # {50, 20, 40, 10, 30}
    9. print(s2) # {'e', 'd', 'f', 'c', 'b', 'a'}
    10. print(type(s3)) # set
    11. print(type(s4)) # dict

    集合的常见操作

    增加操作

    add()

    因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有的数据,则不进行任何操作
    1. s1 = {10, 20, 30}
    2. s1.add(40)
    3. s1.add(10)
    4. print(s1) # {40, 10, 20, 30}

    update()

    以数据序列(字符串、列表和元组等)的方式向集合中追加数据
    1. s1 = {10, 20}
    2. s1.update("12")
    3. print(s1) # {10, '2', 20, '1'}
    4. s1.update([3, 4])
    5. print(s1) # {3, 4, '1', 10, '2', 20}

    删除操作

    remove()

    删除集合中的指定数据,如果数据不存在则报错
    1. s1 = {10, 20}
    2. s1.remove(10)
    3. print(s1) # {20}
    4. s1.remove(10) # {10}已不存在
    5. print(s1) # error

    discard()

    删除集合中的指定数据,如果不存在也不会报错
    1. s1 = {10, 20}
    2. s1.discard(10)
    3. print(s1) # {20}
    4. s1.discard(10) # {10}已不存在
    5. print(s1) # {20}

    pop()

    随机删除集合中的某个数据,并返回这个数据
    1. s1 = {10, 20, 30}
    2. temp = s1.pop() # 伪随机删除----每次运行都删除固定数据
    3. print(temp)

    查找操作

    in

    判断数据在集合序列。 ```python s1 = {10, 20, 30}

if 10 in s1: print(“恭喜答对了!”) # 执行 else: print(“再接再厉!”)

  1. <a name="mqB2c"></a>
  2. #### `not in`
  3. **判断数据不在集合序列**。
  4. ```python
  5. s1 = {10, 20, 30}
  6. if 1 not in s1:
  7. print("恭喜答对了!") # 执行
  8. else:
  9. print("再接再厉!")