5.字典及相关知识
在Python中非常重要的数据类型,在python中唯一一个映射的数据类型
可变与不可变
不可变数据类型
int str bool tupe
可变数据类型 list dict set
dic = { 'name':'lyy', 'name _list':['詹姆斯','哈登','欧文'], 1:{'name':'hht'}, (1,2,3):'wumao', True :'真的', 'age':(213,45) }
print (dic) 一个键对应一个值,默认将True 认为1 覆盖原来键1对应的值
字典的 键,key 值 value
key 是唯一的,而且是不可变数据类型 int str bool true
value 任何数据类型
在3.5版本之前,字典是无序的,3.6之后字典有序,是打印出来看起来有序
字典的增删改查
增
c['key']= 'value'
print (dic)# 不自动给对应值添加none
dic ['name2'] = '依米'
print (dic) #增加一个字典
dic ['name'] = '王子'
print (dic)#覆盖原来的键对应的值
dic 有键则覆盖对应的值,没有键在最后添加
# setdeafult 有key不变,没有key添加 '''dic.setdefault('hobby') print (dic) #添加hobby键,给对应的值添加none dic.setdefault('hobby','开车') #注意添加的时候是逗号 print (dic) dic.setdefault('name','liuyang') print (dic)#有key不变,没有key就添加'''
删
dic = {'name':'lyy','age':18,'sex':'male'}
ret = dic.pop('sex')
print (ret)
print (dic)#删掉键值对,返回值
ret = dic.pop('sex1','没有此键')
print(ret) #会报错,可设置返回值
清空
clear()
dic.clear()
print (dic) #字典清空
del #删除字典
del dic
print (dic)# 会报错,删除了内存中的字典
del dic ['name']
print (dic) 删除键值对,无返回值
建议常用pop 有返回值,返回删除的键值对的值
改
dic['key'] = 'value ' print (dic)# 可认为为增,在字典后增加一对 dic = {'name':'lyy','age':18,'sex':'male'} dic2 ={'name':'laji','weight':'55'} dic2.update(dic) print(dic) print(dic2)#update 将dic中的键值对覆盖添加到dic2中,dic不变 如果dic2中没有dic的键则全部添加到dic2中
查
dic 建议和pop一起记 '''dic = {'name':'lyy','age':18,'sex':'male'} print(dic['name']) print (dic['name2'])#没有键 则会报错 print(dic.get('name')) print (dic.get('name2')) print (dic.get('name2','没有此键返回'))'''
一行代码让a,b值互换
'''a,b = 1,2 print (a,b)#分别赋值 a = 1 b = 3 一行代码让ab值互换 a,b = b,a''' # print (a,b)
字典特有的属性
dic = {'name':'lyy','age':18,'sex':'male'}
keys = dic.keys() #dit_keys 字典特有的类型
print (keys,type(keys)) #找出键输出是列表的特征,本身不是列表,可以转化成列表
print(list(keys),type(list(keys))) #转化成列表
print (dic.values()) #输出键的值
print (dic.items()) #输出每一个键值对
循环打印键值对的方法
for k in dic : print (k) for k in dic.keys() : print (k) #两种循环打印键值对的键,一般用第一种 for v in dic.values() : print (v) #打印出键值对的值 for k,v in dic.items(): print(k,v) #打印出键值对元素 for k in dic : print (k,dic[k]) 两种方法
字典的嵌套
dic ={ 'name':'lyy', 'name_list' :[1,2,3,'哥哥'], 1:{ 'python10':['sn','mi'], '老男孩':{'name':'oldboy','age':56} } } #给name_list增加元素 'jsjd' #给Python 10中增添元素 '华哥' #给老男孩里添加一个键值对 hobby:game '''dic['name_list'].append('jsjd') print(dic) l = dic[1]['python10'] l.insert(1,'华哥') print(dic) dic1 = dic [1] dic2 = dic1['老男孩'] dic2 ['hobby']='男人' print (dic) #分步写 dic[1]['老男孩']['hobby']='男人' print(dic)'''
对字典的value进行排序
d = {'lilee': {"name": 'alex', "gold": 2050},
'wangyan': {"name": 'alex2', "gold": 2900},
'liqun': {"name": 'alex3', "gold": 2800},
'age': {"name": 'alex4', "gold": 2500}}
# 1.使用key和lambda函数来实现
# a = sorted(d.items(), key=lambda item: item[1]["gold"], reverse=True)
# print(a)
# for i in range(0, 3):
# print(a[i])
# 2.将key和value封装成元组,进行排序
d_copy = zip(d.keys(), d.values())
a = sorted(d_copy, reverse=True)
print(a)
浙公网安备 33010602011771号