1、字典的定义:字典是一种key-value(关键字/索引--值)的数据类型,像平时用的字典功能类似,可以通过字母或偏旁、笔画等查找对应页里面的详细内容。
语法:
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi"
}
print(info)
#运行结果:
#{'stu1102': 'Xiao Xiang', 'stu1103': 'Wang Shi', 'stu1101': 'Lan Xiang'}
2、字典的特征:
(1)无序:打印的结果没有按照顺序,字典没有下标,没有位置信息。
(2)取字典里面的元素通过key:key必须是唯一的。
(3)字典的键不可以使用可变类型,如:列表等。
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi"
}
print(info)
print(info["stu1101"])
#运行结果:
#{'stu1101': 'Lan Xiang', 'stu1103': 'Wang Shi', 'stu1102': 'Xiao Xiang'}
#Lan Xiang
3、字典的操作应用:
(1)修改字典里面的内容(通过键key)
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi"
}
print(info)
info["stu1101"] = "蓝翔" #修改
print(info)
#运行结果:
#{'stu1102': 'Xiao Xiang', 'stu1101': 'Lan Xiang', 'stu1103': 'Wang Shi'}
#{'stu1102': 'Xiao Xiang', 'stu1101': '蓝翔', 'stu1103': 'Wang Shi'}
(2)向字典里面添加新的内容(通过键key)
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi"
}
print(info)
info["stu1104"] = "Tian Xin" #添加
print(info)
#运行结果:
#{'stu1101': 'Lan Xiang', 'stu1103': 'Wang Shi', 'stu1102': 'Xiao Xiang'}
#{'stu1101': 'Lan Xiang', 'stu1103': 'Wang Shi', 'stu1104': 'Tian Xin', 'stu1102': 'Xiao Xiang'}
(3)删除字典里面的内容(通过键key)——del:del是Python里面内置通用的方法
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi"
}
print(info)
del info["stu1102"] #删除
print(info)
#运行结果:
#{'stu1101': 'Lan Xiang', 'stu1102': 'Xiao Xiang', 'stu1103': 'Wang Shi'}
#{'stu1101': 'Lan Xiang', 'stu1103': 'Wang Shi'}
删除字典里面的内容(通过键key)——定调用
.pop(要删除的key)方法
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi"
}
print(info)
info.pop("stu1102") #删除
print(info)
#运行结果:
#{'stu1103': 'Wang Shi', 'stu1101': 'Lan Xiang', 'stu1102': 'Xiao Xiang'}
#{'stu1103': 'Wang Shi', 'stu1101': 'Lan Xiang'}
随机删除字典里面的内容——调用
.popitem()方法
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi",
'stu1104':"Tian Xin"
}
print(info)
info.popitem() #随机删除
print(info)
#运行结果:
#{'stu1103': 'Wang Shi', 'stu1104': 'Tian Xin', 'stu1102': 'Xiao Xiang', 'stu1101': 'Lan Xiang'}
#{'stu1104': 'Tian Xin', 'stu1102': 'Xiao Xiang', 'stu1101': 'Lan Xiang'}
(4)
查找字典里面的内容(通过键key):能够查找到直接返回查找内容,不能够查找到返回None——调用
.get(key)方法
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi",
'stu1104':"Tian Xin"
}
print(info.get('stu1105')) #查找
print(info.get('stu1104'))
#运行结果:
#None
#Tian Xin
(5)
判断某个键值key是否存在字典里:key in 字典
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi",
'stu1104':"Tian Xin"
}
print('stu1101' in info)
print('stu1105' in info)
#运行结果:
#True
#False
4、多级字典的嵌套及操作(注:
key尽量不要用中文)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu
instrument_catalog = {
"National":{
"urheen":["stringed instrument"],
"flute":["pipe"],
"zither":["stringed instrument"]
},
"Western":{
"piano":["clavier"],
"guitar":["stringed instrument","I like it"],
"violin":["stringed instrument"]
}
}
instrument_catalog["Western"]["guitar"][1] = "I like it very much" #修改嵌套字典里的内容
print(instrument_catalog)
#运行结果:
#['stringed instrument'], 'urheen': ['stringed instrument'], 'flute': ['pipe']}, 'Western': {'violin': ['stringed instrument'], 'piano': ['clavier'], 'guitar': ['stringed instrument', 'I like it very much']}}
5、字典的其他操作
(1)打印字典里面的值(value):调用.values()方法
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi",
'stu1104':"Tian Xin"
}
print(info.values())
#运行结果:
#dict_values(['Tian Xin', 'Xiao Xiang', 'Wang Shi', 'Lan Xiang'])
(2)打印字典里面的key:调用.keys()方法
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi",
'stu1104':"Tian Xin"
}
print(info.keys())
#运行结果:
#dict_keys(['stu1103', 'stu1104', 'stu1101', 'stu1102'])
(3)在字典里面找key,找到返回值;找不到创建新的键值:调用.setdefault()方法
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi",
'stu1104':"Tian Xin"
}
info.setdefault("stu1104","Li Yuan")
print(info)
info.setdefault("stu1105","Li Yuan")
print(info)
#运行结果:
#{'stu1101': 'Lan Xiang', 'stu1104': 'Tian Xin', 'stu1102': 'Xiao Xiang', 'stu1103': 'Wang Shi'}
#{'stu1101': 'Lan Xiang', 'stu1105': 'Li Yuan', 'stu1104': 'Tian Xin', 'stu1102': 'Xiao Xiang', 'stu1103': 'Wang Shi'}
(4)
字典的更新,若有交叉内容,进行覆盖原始值;若有新内容则添加:调用
.update()方法
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi",
'stu1104':"Tian Xin"
}
info1 = {
'stu1101':"Lu Li",
3:5,
4:6
}
info.update(info1)
print(info)
#运行结果:
#{3: 5, 4: 6, 'stu1104': 'Tian Xin', 'stu1101': 'Lu Li', 'stu1102': 'Xiao Xiang', 'stu1103': 'Wang Shi'}
(5)
将字典转成列表:调用
.items()方法
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi",
'stu1104':"Tian Xin"
}
print(info.items())
#运行结果:
#dict_items([('stu1104', 'Tian Xin'), ('stu1102', 'Xiao Xiang'), ('stu1103', 'Wang Shi'), ('stu1101', 'Lan Xiang')])
(6)
初始化一个新的字典:调用
dict.fromkeys()方法
c = dict.fromkeys([1,2,3],"test")
print(c)
#运行结果:
#{1: 'test', 2: 'test', 3: 'test'}
注:
dict.fromkeys()方法初始化的字典里面的值的地址是由新创建的所有key共享,出现多级嵌套时,通过修改其中一个键值的内容,其他的键值也跟着改变。
d = dict.fromkeys([3,4,5],[2,{"name":"Liu"},345])
print(d)
d[5][1]["name"] = "Sun"
print(d)
#运行结果:
#{3: [2, {'name': 'Liu'}, 345], 4: [2, {'name': 'Liu'}, 345], 5: [2, {'name': 'Liu'}, 345]}
#{3: [2, {'name': 'Sun'}, 345], 4: [2, {'name': 'Sun'}, 345], 5: [2, {'name': 'Sun'}, 345]}
6、字典的循环
(方法一):建议使用(更高效)
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi",
'stu1104':"Tian Xin"
}
for i in info:
print(i,info[i]) #i是键key,info[i]是键值
#运行结果:
#stu1103 Wang Shi
#stu1104 Tian Xin
#stu1102 Xiao Xiang
#stu1101 Lan Xiang
(方法二):
info = {
'stu1101':"Lan Xiang",
'stu1102':"Xiao Xiang",
'stu1103':"Wang Shi",
'stu1104':"Tian Xin"
}
for k,v in info.items(): #会先把dict转成list,数据大时莫用
print(k,v)
#运行结果:
#stu1101 Lan Xiang
#stu1102 Xiao Xiang
#stu1104 Tian Xin
#stu1103 Wang Shi