Python中的字典
Posted hongyu0518
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中的字典相关的知识,希望对你有一定的参考价值。
Python内置了字典:dict,全称dictionary,使用键-值(key-value)存储,具有极快的查找速度。
定义一个字典:
dic = {‘name‘:‘jack‘,‘age‘:18,‘weight‘:76,‘height‘:175}
其中 ‘name‘,‘age‘,‘weight‘,‘height‘是字典中的key,
key在字典中是唯一的,其数据类型为不可变的对象,如:字符串,整数等,list是可变的对象,就不能做为key来使用
dict和list比较:
dict: 查找和插入的速度极快,不会随着key-value的增加而变慢;但是占用的资源比较多,dict是无序的
list:查找和插入的速度慢,会随着元素的增加时间变长,但是占用的资源较少,list是有序的
dict的常用方法:
查找:字典的查找通过key来查找,
value = dic[‘name‘]
print(value)
如果key不存在,则会报错 KeyError,可以通过 get()方法来获取,并指定自定义的返回值
value = dic.get(‘name‘,‘没有这个键‘) print(value)
上面的代码,使用get()方法,来获取 ‘name‘对应的value 如果‘name‘存在,则返回对应的value,如果 ‘name‘ 不存在,则返回 ‘没有这个键‘,如果第二个参数不指定,默认返回 None
增加内容:
dic[‘adress‘] = ‘beijing‘ # 通过 dict[key] = value 的方式来增加元素。注意:如果key存在,则会覆盖对应的value print(dic)
还可以通过setdefault() 方法来增加内容
dic.setdefault(‘house_number‘,888) print(dic)
使用setdefault() 方法,如果只添加key,不给第二个参数赋值,默认为None
dic.setdefault(‘house‘) print(dic)
删除内容 pop() 方法
dic_pop = dic.pop(‘adre‘,‘没有此键‘) print(dic_pop) print(dic)
上面的代码:删除指定的key-value,并返回对应的value。如果指定的key不存在, 返回自定义内容,但,如果key不存在,第二个参数没有填写。则会报错
popitem()方法
print(dic.popitem()) # 随机删除一对key-value对儿,并返回删除的key-value 以元组的形式返回
del 方法 无返回值
del dic[‘name‘] print(dic)
clear()方法 清空字典
dic.clear() print(dic)
修改字典内容,可以通过修改key对应的值来操作
dic = {‘name‘:‘jack‘,‘age‘:18,‘weight‘:76,‘height‘:175} dic[‘name‘] = ‘tom‘ print(dic)
update() 方法
dic_1 = {‘name‘:‘jack‘,‘age‘:18} dic_2 = {‘name‘:‘tom‘,‘address‘:‘beijing‘,‘age‘:19,‘height‘:178} dic_1.update(dic_2) print(dic_1)
以上代码,将dic_2 的内容更新到 dic_1中去
字典循环操作
dic = {‘name‘:‘jack‘,‘age‘:18,‘weight‘:76,‘height‘:175} for k in dic: print(k) # 默认打印字典的key for k in dic.keys(): print(k) # 打印字典的key for v in dic.values(): print(v) # 打印字典中的value for k,v in dic.items(): print(‘k = %s, v = %s‘ %(k,v)) # 打印key 和 value
其中 key() 方法,valuses()方法,以及 items() 方法,返回的数据类型可以当成一个list来使用,但是返回的类型如下:
print(type(dic.keys())) # <class ‘dict_keys‘> print(type(dic.values())) # <class ‘dict_values‘> print(type(dic.items())) # <class ‘dict_items‘>
以上是关于Python中的字典的主要内容,如果未能解决你的问题,请参考以下文章