自学Python--字典

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41402059/article/details/82055289

数据类型划分:

可变数据类型:不可哈希,list、dict、set

不可变数据类型:可哈希,元组、bool、数字、str

字典的key必须是不可变数据类型

字典特点:二分法查找,查询速度快,比列表快;储存大量关系型数据;无序(3.5及以前版本,有序和无序区别在于遍历输出元素顺序可能不一样)

字典增删改查:

增:

直接赋值增加或修改:k存在则覆盖,不存在则增加

dict1 = {
    'name':'xinian',
    'age':18,
}

dict1['hight'] = 181

setdefault(k, value=None):k存在则不替换,k不存在则增加

删:

按照key删:pop(key),返回删除key对应的value,当key不存在时会报错

pop(key, None)当key存在则删除,不存在不报错

pop(key, 'error key') 可自定义,不存在key时返回第二个自定义参数

随机删除:popitem()  暂未发现实际意义,返回删除的键值元组(key, value)

清空字典:clear()

删除字典或者字典内元素:del xxx

在循环中不能删除字典键值对:可把字典键存在列表中,遍历列表的时候删除字典

dict1 = {1:'1', 2:'2', 3:'3', 4:'4', 5:'5', 6:'6'}
for i in dict1:
    del dict1[i] # RuntimeError: dictionary changed size during iteration

# 通过遍历列表来删除
dict1 = {1:'1', 2:'2', 3:'3', 4:'4', 5:'5', 6:'6'}
l = []
for i in dict1:
    l.append(i)

for i in l:
    del dict1[i]

改:

直接赋值;

update():覆盖增加,场景cookie、session更新

dict1 = {'name':'xinian', 'age':18, 'sex':'man'}
dict2 = {'name':'test', 'age':19}
dict2.update(dict1)
print(dict2) # {'name': 'xinian', 'age': 18, 'sex': 'man'}

查:

dict.keys()

dict.values()

dict.items()

dict1 = {'name':'xinian', 'age':18, 'sex':'man'}

print(dict1.keys()) # dict_keys(['name', 'age', 'sex'])
print(dict1.values()) # dict_values(['xinian', 18, 'man'])
print(dict1.items()) # dict_items([('name', 'xinian'), ('age', 18), ('sex', 'man')])

for i in dict1:
    print(i) # 输出key,和for i in dict1.keys()一样

for i in dict1.values():
    print(i) # 输出value

for i in dict1.items():
    print(i) # 输出 键值元组 ('name', 'xinian') ('age', 18) ('sex', 'man')

for k, v in dict1.items():
    print(k, ':', v) # name : xinian age : 18 sex : man

get():

dict.get(key),当key不存在时不会报错,返回None

可以定义key不存在时返回值 dict.get(key, 'xxx')

猜你喜欢

转载自blog.csdn.net/weixin_41402059/article/details/82055289