3.5 字典补充
1.字典的常用函数:
clear:移除字典中所有元素,将字典清空
copy:复制
get:和字典对象[key]类似,通过key值获取值,注意,如果没有该键,则返回none
keys:返回所有的键
values:返回所有的值
setdefault:设置一个默认值
items:返回键值对
pop (key):删除指定key的键值对,并将key对应的值返回
popitem:以元组的形式返回并删除字典中的最后一对键和值
#1.字典的常用函数 print(dir(dict))查看dict的函数
dict1 = {"username":"wzw","password":123,"salary":1200.5}
print(dict1)
#-copy 测试
print("--------------------------------------------------------copy")
print(f"copy复制的字典:{dict1.copy()}")
#-setdefault 测试 (设置一个k-v对并返回v)
print("--------------------------------------------------------setdefault")
print(dict1.setdefault("location","西安市")) #返回值: 西安市
print(dict1) #字符中会新增一对键值 'location': '西安市'
#-pop(key) 测试 (删除指定的键值对)
print("--------------------------------------------------------pop")
print(dict1.pop("location")) #返回值 西安市
print(dict1)
#-popitem() 测试 (删除字典的最后一对k-v,并以元组的形式返回)
#因为在python版本3.7之前ket是无序的,3.7版本之后key变得有序,所以可以判断顺序
print("--------------------------------------------------------popitem")
print(dict1.popitem()) #返回值 ('salary', 1200.5)
print(dict1)
#-keys 测试 (返回所有的键)
print("--------------------------------------------------------keys")
print(dict1.keys()) #dict_keys(['username', 'password'])
#-values 测试 (返回所有的值)
print("--------------------------------------------------------values")
print(dict1.values()) #dict_values(['wzw', 123])
#-items 测试 (返回键值对)
print("--------------------------------------------------------items")
print(dict1.items()) #dict_items([('username', 'wzw'), ('password', 123)])
#-update 测试 (将一个字典更新在原字典中)
print("--------------------------------------------------------update")
print(dict1.update({"age":18})) #None 无返回值
print(dict1) #更新后的结果: {'username': 'wzw', 'password': 123, 'age': 18}
#dict1 = {'username': 'wzw', 'password': 123, 'age': 18}
'''
2.字典的遍历
#-遍历所有的key
print("--------------------------------------------------------all key 方法1")
for i in dict1.keys(): #直接通过遍历keys来输出所有的key
print(i)
print("--------------------------------------------------------all key 方法2")
for i in dict1.items(): #遍历所有的键值对
print(i[0]) #输出键值对下标为0的元素,也就是key,然后循环输出key
#遍历所有的value
print("--------------------------------------------------------all value 方法1")
for i in dict1.values(): #直接遍历value
print(i)
print("--------------------------------------------------------all value 方法2")
for i in dict1.items():
print(i[1]) #因为k-v只有两个元素所以0为k 1为v
print("--------------------------------------------------------all value 方法3")
for i in dict1.keys():
print(dict1.get(i)) # 或者 print(dict1[i])
#遍历所有的key和value
print("--------------------------------------------------------遍历所有的k-v")
for i in dict1.keys():
#print(f"{i}:{dict1[i]}")
print(f"{i}:{dict1.get(i)}")
print("--------------------------------------------------------通过k-v对下标遍历所有的k-v")
for i in dict1.items():
print(f"{i[0]}:{i[1]}")
3.字典的生成--数据可视化
# - formkeys() 将字典的元素赋一个统一的初始值
print("--------------------------------------------------------测试formkeys")
class_list = ["A","B","C","D","E"]
socre = 100
res = dict.fromkeys(class_list,socre)
print(res) #输出 {'A': 100, 'B': 100, 'C': 100, 'D': 100, 'E': 100}
# - zip 将对应的元素赋对应的值
class_list = ["A","B","C","D","E"]
socre_list = [98,45,74,96,87]
res = zip(class_list,socre_list,strict=True) #strict这个参数默认为False,当两个列表的长度不相同时,超出不做处理,如果修改为True则会检索两个列表长度,长度不一样则会报错
print(dict(res))