字典dict
字典dict是Python里面唯一的映射数据类型,它采用key—value对应的数据存储方式。字典的key必须是不可变数据类型,如字符串,数字,元组,字典的value可以是任意数据类型。字典的键Key必须是唯一的,不可重复。Python3.5之前的Python版本字典都是无序的,之后的版本字典都是有序的。
可变数据类型:数字,字符串,布尔值,元组
可变数据类型:列表,字典,集合(set)
字典的基本操作
#字典的增
#1.直接增加,保证key不重复的情况下
dic={1:'a',2:'b',3:'c',4:'d'}
dic[5]='e'
print(dic)
#输出结果:{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
#2.用setdefault函数增加,key已存在时字典不变,key不存在时才添加
dic={1:'a',2:'b',3:'c',4:'d'}
dic.setdefault(5,'e')
print(dic)
#输出结果:{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
dic={1:'a',2:'b',3:'c',4:'d'}
dic.setdefault(1,'e')
print(dic)
#输出结果:{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
#字典的删
#1.pop函数删除,有返回值,返回删除的value。如果字典中没有要删除的键key,可设置其他返回值
dic={1:'a',2:'b',3:'c',4:'d'}
ret = dic.pop(1)
print(dic,ret)
#输出结果:{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
a
ret = dic.pop(5,'返回值')
print(ret)
#输出结果:返回值
#2.clear清空字典
dic={1:'a',2:'b',3:'c',4:'d'}
dic.clear()
print(dic)
#输出结果:{}
#3.del删除字典和删除键值对
dic={1:'a',2:'b',3:'c',4:'d'}
del dic[1]
print(dic)
del dic
print(dic)
#输出结果:{2: 'b', 3: 'c', 4: 'd'}
报错:NameError: name 'dic' is not defined
#4.popiteam Python3.5之前是随机删除,因为字典是无序的,之后都是默认删除最后一个键值对。
dic={1:'a',2:'b',3:'c',4:'d'}
ret = dic.popitem()
print(ret)
print(dic)
#输出结果:(4, 'd')
{1: 'a', 2: 'b', 3: 'c'}
#字典的改
#1.按照key直接改,如果Key字典里就修改对应value,不在就添加
dic={1:'a',2:'b',3:'c',4:'d'}
dic[1]='e'
print(dic)
#输出结果:{1: 'e', 2: 'b', 3: 'c', 4: 'd'}
#1.Update改,将dic的键值对,覆盖,添加到dic2 中,dic不变
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic)
print(dic)
print(dic2)
#输出结果:{'name': 'jin', 'age': 18, 'sex': 'male'}
{'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}
#字典的查
#1.直接通过键key查
dic={1:'a',2:'b',3:'c',4:'d'}
print(dic[1])
#print(dic[5]) 没有key则报错
#输出结果:a
#2.get函数查,没有对应key时默认返回None,可设置返回值
dic={1:'a',2:'b',3:'c',4:'d'}
print(dic.get(3))
print(dic.get(5))
print(dic.get(6,'没有此键值对'))
#输出结果:c
None
没有此键值对
字典的嵌套和列表类似
dic = {
'name':'金鑫',
'name_list':[1,2,3,'李杰'],
1:{
'python10':['小黑','萌哥'],
'老男孩':{'name':'oldboy','age':56}
}
}
#1 [1,2,3,'李杰']追加'wusir'
dic['name_list'].append('wusir')
print(dic)
# 2 ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥
dic[1]['python10'].insert(1,'花哥')
print(dic)
# 3 ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥
dic[1]['老男孩']['hobby']=('男人')
print(dic)
Ps:
a = 1 b = 3 一行代码,让a,b值互换
a,b=b.a
print(a,b) 结果:a=3,b=1
a,b=['1','2'] a='1' b='2' a和b是字符串类型
a,b=('1','2') a='1' b='2' a和b是字符串类型
字典的函数操作
和list列表类似,字典有count,len
把全部的key取出来用 keys,取出来后是类似 list 的表,但不是 list,通过转变可以变成 list列表
dic={1:'a',2:'b',3:'c',4:'d'}
keys = dic.keys()
print(keys,type(keys))
k=list(keys)
print(k,type(k))
输出:dict_keys([1, 2, 3, 4]) <class 'dict_keys'>
[1, 2, 3, 4] <class 'list'>
把全部的值value取出来也类似,用values,不是列表但可以转变成列表
dic={1:'a',2:'b',3:'c',4:'d'}
values = dic.values()
print(values,type(values))
v=list(values)
print(v,type(v))
结果:dict_values(['a', 'b', 'c', 'd']) <class 'dict_values'>
['a', 'b', 'c', 'd'] <class 'list'>
把键值对取出来用 items,与上面类似
dic={1:'a',2:'b',3:'c',4:'d'}
items = dic.items()
print(items)
结果:dict_items([(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')])
把键值对取出来,简单的 for 循环
for k,v in dic.items():
print(k,v)for k in dic:
print(k,dic[k])