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

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

一、字典的简介

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

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

二、增加字典元素的方法

  • list[‘key’] = vaule

    这种方法是通过key给字典添加元素,如果字典里已存在该key的值,则会覆盖,如果不存在,则会添加,如下如:

dic = {'name':'小明','age':29,'job':'程序员'}

dic['addr'] = '广州'
print(dic)
#输出结果为:{'name': '小明', 'age': 29, 'job': '程序员', 'addr': '广州'}
dic['addr'] = '深圳'
print(dic)
#输出结果为:{'name': '小明', 'age': 29, 'job': '程序员', 'addr': '深圳'}
  • setdefault()方法:

    此方法是根据函数对字典进行增添元素,参数为(‘key’,‘value’) value默认为程序员,与直接用 dict[key] = value 的添加元素方法不同,用setdefault(key,value)方法的时候,如果字典没有该key的时候,则会正常添加,如果已经有了该key,那么将不进行操作(不会覆盖原来的值)

dic = {'name':'小明','age':29,'job':'程序员'}
dic.setdefault('name','小芳')
print(dic)  #结果不会改变: {'name': '小明', 'age': 29, 'job': '程序员'}

dic.setdefault('height')
print(dic)  #结果:{'name': '小明', 'age': 29, 'job': '程序员', 'height': None}

dic.setdefault('addr','广州')
print(dic) #结果 {'name': '小明', 'age': 29, 'job': '程序员', 'height': None, 'addr': '广州'}

三、删除字典元素的方法

  • pop(key)方法:

    与列表的pop()方法不同,字典的pop()方法必须得给它传一个key值,如果字典里没有该key,则会报错。也可以用 pop(key,‘返回值’) 来指定返回值,此时,当找不到key的时候,则不会报错,会将指定的返回值返回

dic = {'name':'小明','age':29,'job':'程序员'}
dic.pop('job')
print(dic)  #结果为:{'name': '小明', 'age': 29}

dic.pop('job')
print(dic)  #此时以及没有job的key,就会报错 KeyError: 'job'

print(dic.pop('addr','广州'))  #此时虽然找不到‘addr’key,但是不会报错,并且将‘广州’返回 
print(dic)	#此时字典没有被改变 :{'name': '小明', 'age': 29}
  • popitem()方法:

    此方法类似于列表的pop()方法,用来随机删除一个元素,返回删除的那个元素的(键,值),如下:

dic = {'name':'小明','age':29,'job':'程序员'}
print(dic.popitem())  #结果为('job', '程序员')
print(dic)          #结果为:{'name': '小明', 'age': 29}
  • del list[key]

    此方法用来删除字典种指定key以及它所对应的value,如果找不到该key,则会报错,如下:

dic = {'name':'小明','age':29,'job':'程序员'}
del dic['job']
print(dic) #结果为:{'name': '小明', 'age': 29}

del dic['job']
print(dic)  #此时字典里已经没有job值,则会报错:KeyError: 'job'
  • clear()方法:

    该方法与列表的clear()方法类似,用来清空字典,如下:

dic = {'name':'小明','age':29,'job':'程序员'}
dic.clear()
print(dic)   #结果为:{}
  • -del dic

    该方法用来删除整个字典,如下:

dic = {'name':'小明','age':29,'job':'程序员'}
del dic
print(dic)   #此时dic已经被删除,不存在了,所以会报错:NameError: name 'dic' is not defined

四、修改字典元素的方法

  • list[‘key’] = vaule

    这种方法是通过字典的kye来修改对应的value值,如果字典里已存在该key的值,则会修改,如果不存在,则会重新添加

dic = {'name':'小明','age':29,'job':'程序员'}
 
dic['addr'] = '广州'  #此时没有addr的key  则会添加
print(dic)
#输出结果为:{'name': '小明', 'age': 29, 'job': '程序员', 'addr': '广州'}

dic['addr'] = '深圳' #此时以及有addr的key  则会修改
print(dic)
#输出结果为:{'name': '小明', 'age': 29, 'job': '程序员', 'addr': '深圳'}
  • update({key:value})方法:

    该方法是用来追加、拓展原字典元素。

    参数必须为一个字典,如下:

dic = {'name':'小明','age':29,'job':'程序员'}
dic.update({'addr':'广州'})
print(dic)	#结果为:{'name': '小明', 'age': 29, 'job': '程序员', 'addr': '广州'}

如果传入的字典里有部分key与原字典相同,则该key所对应的值会被覆盖,其他没有的key则会被添加,如下:

dic = {'name':'小明','age':29,'job':'程序员'}
dic.update({'addr':'广州','name':'小芳'})
print(dic)
#结果为:{'name': '小芳', 'age': 29, 'job': '程序员', 'addr': '广州'}

五、查询字典元素的方法

  • dic[key]

    可以通过key来索引查询字典的元素,如果查不到,则会报错

dic = {'name':'小明','age':29,'job':'程序员'}
print(dic['name'])    #结果为:小明
print(dic['addr'])     #搜索不到,会报错。KeyError: 'addr'
  • get(key)方法:

    该方法是用指定索引的方法来查找其所对应的元素,如果找不到,不会报错,可以通过 dic.get(key,‘返回值’) 方法指定找不到key时候的返回值,如下:

dic = {'name':'小明','age':29,'job':'程序员'}
print(dic.get('name'))  #结果为:小明
print(dic.get('job'))  #结果为:程序员
print(dic.get('addr','找不到该数据')) #结果为:找不到该数据

六、用循环的方法来遍历字典

  • keys()方法

    此方法用来查询字典所有的key,可以用for循环进行遍历

dic = {'name':'小明','age':29,'job':'程序员'}
print(dic.keys())
# 结果:dict_keys(['name', 'age', 'job'])

for key in dic.keys():
    print(key)
# 结果为:
# name
# age
# job
  • values()方法

    此方法用来查询字典所有的values,可以用for循环进行遍历

dic = {'name':'小明','age':29,'job':'程序员'}
print(dic.values())
# 结果:dict_values(['小明', 29, '程序员'])

for value in dic.values():
    print(value)
# 结果为:
# 小明
# 29
# 程序员
  • items()方法

    此方法用来查询字典所有的键值,可以用for循环来遍历

dic = {'name':'小明','age':29,'job':'程序员'}
print(dic.items())
# 结果:dict_items([('name', '小明'), ('age', 29), ('job', '程序员')])

for k,v in dic.items():
    print(k,v)
# 结果为:    
# name 小明
# age 29
# job 程序员
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值