字典 (dict) 的增删改查及其他方法

一、字典

1、字典简介:

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过索引存取。

PS:数据类型划分:可变数据类型  和  不可变数据类型

        不可变数据类型:元组、bool、int、str    (可哈希)

        可便数据类型:list,dict,set                (不可哈希)

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

              value:任意数据类型

        dict优点:二分查找去查询,存储大量的关系型数据

             特点:无序的

2、字典用法:

1)增:

dic1 = {'age':18,'name':'liu','sex':'male'}

dic1['high'] = 185 #没有键值对,添加
结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'high': 185}
dic1['age'] = 16 #如果有键,则值覆盖
结果:{'age': 16, 'name': 'liu', 'sex': 'male'}

dic1.setdefault('weight')
结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'weight': None}
dic1.setdefault('weight',110) #有键值对,不做任改变,没有才添加。
结果:{'age': 18, 'name': 'liu', 'sex': 'male', 'weight':110}
dic1.setdefault('name','Liu') #有键值对,不做任改变,没有才添加。
结果{'age': 18, 'name': 'liu', 'sex': 'male'}

2)删:

dic = {'age':18,'name':'liu','sex':'male'}

dic.pop('age') #有返回值,按键去删删除
结果:{'name': 'liu', 'sex': 'male'}
dic.pop('瓜子',None) #可设置返回值,没设置返回值会报错,返回值为None
结果:{'age': 18, 'name': 'liu', 'sex': 'male'}

dic.popitem() #随机删除 有返回值 元组里面是删除键值,Python3.6以后是默认删除最后一个
结果:{'age': 18, 'name': 'liu'}

del dic['name'] #删除指定键值对,如果没有会报错。
结果:{'age': 18, 'sex': 'male'}
del dic #直接删除字典,会报错。
结果:报错

dic.clear() #清空字典
结果:{}

3)改:

dic = {'age':18,'name':'liu','sex':'male'}

dic['age'] = 16 #覆盖就是更改
结果:{'age': 16, 'name': 'liu', 'sex': 'male'}

dic = {'age':18,'name':'liu','sex':'male'}
dic1 = {'name':'志东','weight':65}
dic.update(dic1) #直接替代更新,用字典更新替代老的字典.update前面的是被更新的字典
print(dic)  
结果:{'age': 18, 'name': '志东', 'sex': 'male', 'weight': 65} #更新后的字典
print(dic1)
结果:{'name': '志东', 'weight': 65} #原字典

4)查:

dic = {'age':18,'name':'liu','sex':'male'}

print(dic.keys()) #字典的键值对 以列表形式输出 但是类型是键值对型
结果:dict_keys(['age', 'name', 'sex'])  
print(type(dic.keys()))     
结果dict_keys

print(dic.values()) #字典的值 以列表形式输出 但是类型是键值对型
结果:dict_values([18, 'liu', 'male'])
print(type(dic.values()))
结果:dict_values

print(dic.items()) #字典的键值对 以元祖形式输出 但是类型是键值对型
结果:dict_items([('age', 18), ('name', 'liu'), ('sex', 'male')])
for i in dic: #默认打印出键值,后面跟.value可以打印出数值,后面跟.items可以打印键值对
    print(i)
结果:age
         name
         sex

print(dic.get('age')) #根据键找对应的数值,不报错 可以自定义值 默认返回 None
结果:18
for i , j in dic.items():
    print(i,j)
结果 
age 18
name liu
sex male

猜你喜欢

转载自www.cnblogs.com/hello-boy/p/10122067.html