################ 字典 Dictionary ################
# 格式: 字典名 = {键值1: 实值1, 键值2: 实值2, .....}
# key1:value1 ->统称为 键值对
# key1:value1 ->称为元素1; key2:value2 ->称为元素2; .....
# 键值数据类型的选择: 必须是不可变的。键值不能为字典/列表,可以为元组
# 字典的key 一般都是使用字符串
my_dict = {"class": "001","name": "小明", "age": 22}
print(len(my_dict)) # 三个元素(键值对)
#<<<3
# key和value是1对1的关系 ,可以通过一个key 获取key对应 的value)
# 字典 key的名字不能重复 (如果key重复,value会覆盖)
my_dict = {"class": "001","name": "小明","name":"覆盖" ,"age": 22}
print(my_dict)
#<<< {'class': '001', 'name': '覆盖', 'age': 22}
## 字典的value 没有规定(可以重复的)
my_dict = {"class": "001","name": "小明", "age": 22,"no": "001"}
print(my_dict)
#<<< {'class': '001', 'name': '小明', 'age': 22,"no": "001"}
## 定义一个特殊 (空字典)
my_dict1 = {}
print(len(my_dict1))
#<<< 0
print(type(my_dict1))
#<<< <class 'dict'>
######## 字典的常见操作 ########
## 字典是无序的 可变的
# <1>修改元素
# 字典的每个元素中的value 是可以修改的
## 通过key 获取 key对应的value的值
my_dict = {"class": "001","name": "小明", "age": 22}
print(my_dict["age"])
#<<< 22
## 通过key 修改key对应的value的值
my_dict["age"] = 100
print(my_dict)
#<<< {'class': '001', 'name': '小明', 'age': 100}
# <2>添加元素
## 格式: 字典名[key] = value
# 如果这个key不存在 就添加一组键值对;如果这个key存在 会吧key原来的value的值进行覆盖
my_dict = {"class": "001","name": "小明", "age": 22}
my_dict["no"] = "2333"
print(my_dict)
#<<< {'class': '001', 'name': '小明', 'age': 22, 'no': '2333'}
my_dict["name"] = "小红"
print(my_dict)
#<<< {'class': '001', 'name': '小红', 'age': 22, 'no': '2333'}
# <3>删除元素
### 对字典进行删除操作,有2种方法:
# del (python内置函数)
# clear()
### 删除键值对;
# 格式: del 字典名[key]
my_dict = {"class": "001","name": "小明", "age": 22}
del my_dict["age"] # 删除 "age": 22
print(my_dict)
#<<< {'class': '001', 'name': '小明'}
### clear 删除字典中的所有的元素
my_dict = {"class": "001","name": "小明", "age": 22}
my_dict.clear() # 等价于 my_dict = {} 或 my_dict = dict()
print(my_dict)
#<<< {}
######## 字典的方法 ########
# <1>len()
# 计算字典中,键值对(元素)的个数
my_dict = {"class": "001","name": "小明", "age": 22}
L = len(my_dict)
print("元素数:%d" % L)
#<<< 元素数:3
# <2>keys
# keys()函数以列表 返回一个字典所有的键。
my_dict = {"class": "001","name": "小明", "age": 22}
keys = my_dict.keys()
print(keys)
# <<< dict_keys(['class', 'name', 'age'])
print(list(keys)) # 转成list类型
# <<< ['class', 'name', 'age']
# <3>values
# values()方法返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值。
my_dict = {"class": "001","name": "小明", "age": 22}
values = my_dict.values()
print(list(values))
#<<< ['001', '小明',22]
# <4>items
# items()函数 以列表 返回可遍历的(键, 值) 元组数组。
# 最外层是一个列表 每个元素是一个元组
my_dict = {"class": "001","name": "小明", "age": 22}
items = my_dict.items()
print(items)
#<<< dict_items([('class', '001'), ('name', '小明'), ('age', 22)])
print(list(items))
#<<< [('class', '001'), ('name', '小明'), ('age', 22)]
my_list = list(items)
print(my_list[2][0]) # 获取age