#字典:
#1.定义 : 字典里的数据是以键值对出现的,字典数据跟顺序没有关系,即字典不支持下标操作
#无论数据(值)怎么变化,只要根据键来查找就能找到数据
#特点 : 大括号,键值对形式出现,用逗号隔开
#字典是可变类型
#1.1创建字典
#创建有数据的字典 :
dict1 = {'name':'Willow', 'age':30, 'gender':'男'}
print(dict1) #输出 {'name': 'Willow', 'age': 30, 'gender': '男'}
print(type(dict1)) #输出 <class 'dict'>
#创建空字典
#直接用大括号
nulldict1 = {}
print(type(nulldict1)) #输出 <class 'dict'>
#使用函数 dict()创建空字典
nulldict2 = dict()
print(type(nulldict2)) #输出 <class 'dict'>
=========================================================
#2.字典的常用操作
#2.1增/改
# 字典序列[key] = 值
# 如果key存在,则修改这个key的值,如果key不存在,则新增
dict1 = {'name':'Willow', "age":20, "gender":"man"}
print(dict1) #输出 {'name': 'Willow', 'age': 20, 'gender': 'man'}
dict1["name"] = 'Liu'
print(dict1) #输出 {'name': 'Liu', 'age': 20, 'gender': 'man'}
dict1["Country"] = 'China'
print(dict1) #输出 {'name': 'Liu', 'age': 20, 'gender': 'man', 'Country': 'China'}
#print(type(dict["name"])) #报错 TypeError: 'type' object is not subscriptable
#2.2 删
#2.2.1 del() / del : 删除字典或删除字典中指定键值对
print(dict1) #输出 {'name': 'Liu', 'age': 20, 'gender': 'man', 'Country': 'China'}
del dict1['gender']
print(dict1) #输出 {'name': 'Liu', 'age': 20, 'Country': 'China'}
del(dict1['Country'])#输出 {'name': 'Liu', 'age': 20}
print(dict1)
#del dict1 #删除整个dict1
#注意,当删除不存在的key时,会报错 KeyError: 'Counter'
#2.2.2 clear()
dict1.clear()
print(dict1) #输出 {}
========================================
dict1 = {'name':'Willow', "age":20, "gender":"man"}
#3.查找
#3.1 key值查找
print(dict1['name']) #输出 Willow
#print(dict1['Country']) #当字典没有该key时,报错 KeyError: 'Country'
#3.2 get()函数
#语法 字典序列.get(key, 默认值)
#注意 : 如果当前查找的key不存在,则返回第二个参数(默认值),如果省略第二个参数,则返回None
print(dict1.get('name', 'Liu')) #输出 Willow
print(dict1.get('Country', 'China')) #输出 China
print(dict1.get('id')) #输出 None
#3.3 keys() 函数
#返回字典中的key
print(dict1.keys()) #输出 dict_keys(['name', 'age', 'gender'])
print(type(dict1.keys())) #输出 <class 'dict_keys'>
#3.4 values()函数
#返回字典中的values
print(dict1.values()) #输出 dict_values(['Willow', 20, 'man']),返回可迭代对象
print(type(dict1.values())) #输出 <class 'dict_values'>
#3.5 items() 函数
#返回一个可迭代对象,键值对以元组(包含两个元素,一个Key,一个value)的形式返回
print(dict1.items()) #输出 dict_items([('name', 'Willow'), ('age', 20), ('gender', 'man')])
print(type(dict1.items())) #输出 <class 'dict_items'>
========================================================
#4字典的循环遍历
#4.1 遍历字典的key
dict1 = {'name':'Willow', 'age':30, 'gender':'man','Country':'China'}
for keys in dict1.keys():
print(keys)
'''
输出
name
age
gender
Country
'''
#4.2 遍历字典的Value
for value in dict1.values():
print(value)
'''
输出
Willow
30
man
China
'''
#4.3 遍历字典的元素
for item in dict1.items():
print(item)
'''
输出
('name', 'Willow')
('age', 30)
('gender', 'man')
('Country', 'China')
'''
#4.4 遍历字典的键值对,指将得到的数据经行拆包动作
for key , value in dict1.items():
print(f'key:{key}, value:{value}')
'''
输出
key:name, value:Willow
key:age, value:30
key:gender, value:man
key:Country, value:China
'''