一、前言
本文主要记录了Python学习过程中,基本数据类型字典dict的操作
二、字典dict
主要包括增、删、改、查的一些方法
字典是python中唯一的映射类型数据,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。字典(dictionary)是除列表之外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
增
直接添加
dic = { 'name': 'allen', 'age': 19, 'hobby': 'basketball'}dic['address'] = '北京' # 有key则修改,无key则增加print(dic){'name': 'allen', 'age': 19, 'hobby': 'basketball', 'address': '北京'}
使用set.default()添加元素
dic = { 'name': 'allen', 'age': 19, 'hobby': 'basketball'}dic.setdefault('name','alex') #有key不修改,无则增加{'name': 'allen', 'age': 19, 'hobby': 'basketball'}dic.setdefault('tel','18888813694') #有key不修改,无则增加{'name': 'allen', 'age': 19, 'hobby': 'basketball', 'tel': '18888813694'}
删
dic = { 'name': 'allen', 'age': 19, 'hobby': 'basketball'}res = dic.pop('name')print(res)输出结果{'age': 19, 'hobby': 'basketball'}res = dic.pop('address','没有此key') # 没有此key时不报错print(res){'name': 'allen','age': 19, 'hobby': 'basketball'}
dic.popitem() # 随机删除,有返回值
dic.clear() # 清除字典中的元素 del dic # 删除字典改
dic = { 'name': 'alex', 'age': 19, 'hobby': 'basketball',}dic1 = { 'address': 'beijing', 'age': 25, 'tel': '17888813693',}dic['age]=20print(dic)结果:{ 'name': 'alex', 'age': 19, 'hobby': 'basketball',}dic.upate(dic1) # dic1中有和dic相同的key,修改dic中元素value,不相同key的item添加到dic中{'name': 'alex', 'age': 25, 'hobby': 'basketball', 'address': 'beijing', 'tel': '17888813693'}
查
dic = { 'name': 'alex', 'age': 19, 'hobby': 'basketball',}print(dic['name']) #alexprint(dic['sex']) # 由于找不到key会报错res = dic.get('sex', '男') # 不会报错,找不到返回默认的
字典的遍历
dic = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'name': 'alex'}
for i in dic: print(i)# 打印的是key k1k2k3name
for i in dic.keys(): print(i)# 打印的是key k1k2k3name
for i in dic.values(): print(i)# 打印的是值v1v2v3alex
for i in dic.items(): print(i)# 打印的是key-value键值对 ('k1', 'v1')('k2', 'v2')('k3', 'v3')('name', 'alex')
需要注意点:
1、遍历字典时,最好不要改变字典的大小 2、fromkeys(l,value)将可迭代对象各个元素作为key,将value作为各个key的值,返回一个字典dic = dict.fromkeys('abc', 666)print(dic){'a': 666, 'b': 666, 'c': 666}
dic = dict.fromkeys('abc', [])# 坑dic['a'].append(666)print(dic){'a': [666], 'b': [666], 'c': [666]}