Python学习之路--dict

dict {key:value}

键值对,映射类型

dict中的key,必须是不可变数据类型,可哈希

             value:任意数据类型

数据类型划分:可变数据类型,不可变数据类型

不可变数据类型:不可更改,元组,bool,int,str   可哈希

可变数据类型:列表list,字典dict                             不可哈希

优点:二分查找查询

           存储大量的关系型数据

特点:3.5之前无序

Python学习之路--dict
dic = {
    'name': ['大门', '小明'],
    'py': [{'人数': '70', 'avg': '18'}],
    True: 1,
    (1, 2, 3): 'wuli',
     2:'eref',
}
print(dic)
#{'name': ['大门', '小明'], 'py': [{'人数': '70', 'avg': '18'}], True: 1, (1, 2, 3): 'wuli', 2: 'eref'}
View Code

增加

Python学习之路--dict
dict1 ={'age': 18, 'name': 'r', 'sex':'femal' }
dict1['high'] = 155 #没有键值对,添加
print(dict1)
dict1['age'] = 16  #有键,则覆盖
print(dict1)
'''
{'age': 18, 'name': 'r', 'sex': 'femal', 'high': 155}
{'age': 16, 'name': 'r', 'sex': 'femal', 'high': 155}
'''
View Code

setdefault()有键值,不做改变,没有,增加

Python学习之路--dict
#{'age': 18, 'name': 'r', 'sex': 'femal', 'weight': None}
dict1.setdefault('weight',150)
#{'age': 18, 'name': 'r', 'sex': 'femal', 'weight': 150}
dict1.setdefault('name','dh')
print(dict1)
#{'age': 18, 'name': 'r', 'sex': 'femal', 'weight': 150}
View Code

删除

pop() 有返回值,按键删除

Python学习之路--dict
print(dict1.pop('age'))
print(dict1)
# 18
# {'name': 'r', 'sex': 'femal'}
print(dict1.pop('bsjh','没有此键'))  #若不知道字典里有没有此键,则加个参数
print(dict1)
# 没有此键
# # {'name': 'r', 'sex': 'femal'}
View Code

popitem()随机删除,有返回值

Python学习之路--dict
dict1.popitem()
print(dict1)
#{'age': 18, 'name': 'r'}
View Code

clear()清空

del(‘key’)/dict

修改

dict1['age']=18

update() 把一个字典,覆盖更新到目标字典中

Python学习之路--dict
dict2 ={ 'name': 'r', 'weight':'75' }
dic ={'age': 18, 'name': 'r', 'sex':'femal'}
dict2.update(dic)
print(dic)
print(dict2)
# {'age': 18, 'name': 'r', 'sex': 'femal'}
# {'name': 'r', 'weight': '75', 'age': 18, 'sex': 'femal'}
View Code

查询

print(dict1.keys())
print(dict1.values())
print(dict1.items())

dict_keys(['age', 'name', 'sex'])
dict_values([18, 'r', 'femal'])
dict_items([('age', 18), ('name', 'r'), ('sex', 'femal')])

Python学习之路--dict
for i in dict1:  #for i in dict1.keys():
    print(i)
'''age
name
sex'''
for i in dict1.values():
    print(i)
'''18
r
femal'''
for i in dict1.items():
    print(i)
'''('age', 18)
('name', 'r')
('sex', 'femal')'''
View Code Python学习之路--dict
for k,v in dict1.items():
    print(k,v)
# age 18
# name r
# sex femal
View Code Python学习之路--dict
v1 =dict1['name']
print(v1)
print(dict1.get('name'))
print(dict1.get('name1','NNN'))
# r
# r
# NNN
View Code

嵌套

Python学习之路--dict
dic = {
    'name': ['alex','wusir','taibai'],
    'py9':{
        'time':'1213',
        'learn_money':19800,
        'address':'CBD'
    },
    'age':21
}
dic['age'] = 56
dic['name'].append('ritian')
print(dic)
{'name': ['alex', 'wusir', 'taibai', 'ritian'], 'py9': {'time': '1213', 'learn_money': 19800, 'address': 'CBD'}, 'age': 56}


dic['name'][1] = dic['name'][1].upper()
print(dic)
#{'name': ['alex', 'WUSIR', 'taibai'], 'py9': {'time': '1213', 'learn_money': 19800, 'address': 'CBD'}, 'age': 21}



dic['py9']['famel'] = 6
print(dic)
#{'name': ['alex', 'wusir', 'taibai'], 'py9': {'time': '1213', 'learn_money': 19800, 'address': 'CBD', 'famel': 6}, 'age': 21}
View Code

 

 

小结

dict: dict={'name:'alex'}

增: dict[‘age’]=21 存在就覆盖

dic.setdefault()没有就增加

 

删除:pop()按key删除,有返回值

           clear()

          del dic['name']

           popitem()随机删除,返回时元组

改:update

查:

dic.keys() 键

dic.values() 值

dic.items() 键值对

for k,v in dic.items():

    print(k,v)

get

dc.get(key,None)

上一篇:Python Learning Day2


下一篇:Python学习 day5