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)

 

posted on 2018-09-25 12:01  小王子QAQ  阅读(33)  评论(0)    收藏  举报