字典(dict)
特点:字典是可变的(支持增删改查);无序的(不支持下标操作);
字典的元素:键是不可变的,唯一的;值可以是任何类型的数据,并且可以重复
格式: {
键1:值1,键2:值2,键3:值3,……
}
字典的增删改查
查 --获取字典的值
获取单个值
- 字典[key] ----获取字典中指定key对应的值(如果key不存在,会报错)
- 字典.get(key) —获取字典中指定key对应的值(如果key不存在,None)
字典.get(key,默认值) --获取字典中指定key对应的值(如果key不存在,返回默认值)
movie1={
'name':'战狼',
'direct':'吴京',
'actor':'吴京',
'release_time':'2015',
'kind':'动作/战争'
}
movie2={
'name':'沉默的羔羊',
'direct':'乔纳森戴米',
'actor':'朱迪福斯特',
'release_time':'1991',
'kind':'恐怖'
}
print(movie1['name']) #战狼
print(movie2['act']) #KeyError: 'act'
print(movie2.get('name')) #沉默的羔羊
print(movie2.get('act')) #None
print(movie2.get('release_time','2020')) #1991
获取多个值
遍历字典
方法一:
for 变量 in 字典:
循环体(变量在循环体中得到的是字典的key)
for x in movie2:
print(x,movie2[x])
方法二:
for key,value in 字典.item():
循环体(循环体中key取到的所有的键,value取到的是键对应的值)
for key ,value in movie1.items():
print(key,value)
增/改 —添加键值对/修改键值对的值
字典[key]=值 —当key不存在,就是添加键值对
当key存在,就是修改键值对的值
subject={
'name':'python',
'score':'3',
'class_hour':'20',
'direction':['数据分析','web后端','爬虫','自动化运维']
}
subject['teacher']='余婷'
print(subject)
subject['score']='4'
print(subject['score'])
删 --删除键值对
- del 字典[key] --删除字典key指定对应的键值对
- 字典.pop(key) --取出字典中指定key对应的值
- 字典.clear() --全部删除
del subject['class_hour']
print(subject)
subject.pop('direction')
print(subject)
subject.clear()
print(subject)
相关操作
- 字典不支持加法、乘法和比较大小的运算
print({'a','100'}+{'b','12'}) #TypeError: unsupported operand type(s) for +: 'set' and 'set'
-
判断是否相等
is 判断俩个数据的地址是否相等
print({'a':10,'b':20}=={'b':20,'a':10}) #True
a={'a':10}
b={'a':10}
c=a
print(a==b) #True
print(a is b) #False
print(a is c) #True
- in 和 not in
key in 字典 -----判断字典中是否有指定的key
fen={'name':'枫','age':'22','tel':'110'}
print('name' in fen) #True
print(22 in fen) #False
- 相关函数(len/dict)
len(字典) --获取字典中键值对的个数
fen={'name':'枫','age':'22','tel':'110'}
print(len(fen)) #3
dict(数据) --将其他数据转换成字典(数据的要求:1.序列 2.序列中的元素还是序列 3.内部的序列有且只有俩个元素,其中第一个元素是不可变得)
list=['ab',(10,20),['name','张三']]
print(dict(list)) #{'a': 'b', 10: 20, 'name': '张三'}
将字典转换成其他数据
- 将字典转换成列表/元组
fen={'name':'枫','age':'22','tel':'110'}
print(list(fen)) #['name', 'age', 'tel']
print(tuple(fen)) #('name', 'age', 'tel')
- 将字典转换成字符串
fen={'name':'枫','age':'22','tel':'110'}
print(str(fen)) #{'name': '枫', 'age': '22', 'tel': '110'}
- 将列表转换成布尔
fen={'name':'枫','age':'22','tel':'110'}
print(bool({})) #False
print(bool(fen)) #True
相关方法
1.字典.clear()
fen={'name':'枫','age':'22','tel':'110'}
fen.clear()
print(fen) #{}
2.字典.copy()
fen={'name':'枫','age':'22','tel':'110'}
fen1=fen.copy()
print(fen1,id(fen1),id(fen))
3.dict.fromkeys(序列,默认值=None) --创建一个新的字典,序列中所有的元素回作为新字典的key,默认值是所有key对应的值
new_dict=dict.fromkeys('abc')
print(new_dict) #{'a': None, 'b': None, 'c': None}
new_dict=dict.fromkeys(['name','age','sex'],0)
print(new_dict) #{'name': 0, 'age': 0, 'sex': 0}
new_dict=dict.fromkeys(['name','age','sex'],['中山',19,'男'])
print(new_dict) #{'name': ['中山', 19, '男'], 'age': ['中山', 19, '男'], 'sex': ['中山', 19, '男']}
4.字典.items() 字典.keys() 字典.values()
fen={'name':'枫','age':'22','tel':'110'}
print (fen.items ()) #dict_items([('name', '枫'), ('age', '22'), ('tel', '110')])
print (fen.keys ()) #dict_keys(['name', 'age', 'tel'])
print (fen.values ()) #dict_values(['枫', '22', '110'])
5.字典.setdefault(key,value) --在字典中添加键值对(单纯的添加键值对,不会修改)
fen={'name':'枫','age':'22','tel':'110'}
fen.setdefault('score',98)
print(fen) #{'name': '枫', 'age': '22', 'tel': '110', 'score': 98}
fen.setdefault('name','小花')
print(fen)
6.字典1.update(字典2) --将字典2中的键值对添加到字典1中
fen={'name':'枫','age':'22','tel':'110'}
y={'a': None, 'b': None, 'c': None}
fen.update(y)
print(fen) #{'name': '枫', 'age': '22', 'tel': '110', 'a': None, 'b': None, 'c': None}