在用python处理dict 的时候,有几个该注意的地方,这里跟大家提一下:

1)操作dict 时,尽量少产生新的列表对象。比如:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

   遍历dict的时候,如果用

dic = {"a":"hello","b":"hi","c":"no"}
for key,value in dic.items():
    print(key,value)

  此时,dic.items() 会产生一个新的列表对象,占用宝贵的内存,我们可以换成:

for key in dic:
    print(key,dic[key])

  直接遍历dict中的key,再取出对应key的value

  像是判断  key 是否存在字典中,也是相同的道理

dic = {"it":"zhang","hi":"hello"}
s = "hi"

  如果我们用以下的判断方法,会产生一个新的列表对象,占用内存

s in dic.keys()
  可以直接用:
s in dic

  注意一点的是,has_key 在python3中已经被移除,因为用in处理速度更快

2)合并字典

  常用的操作是

dict(dic1,**dic2)
{**dic1,**dic2}

  这样的合并方式会产生新的字典对象

  而如果是 update 更新操作,即是在原来的字典对象上进行更新,如果dic1 和dic2 有相同key,那么dic1 的值会被dic2覆盖

dic1.update(dic2)

3)排序

  字典本质上是个无序的容器对象(其实Python3.6开始支持有序,不过这个有序是指按照key的添加顺序),如果我们要对字典的 key 或者 value 排序,一般是将其转换为list,再按照key或者value排序。

4)defaultdict    默认初始化字典

  顾名思义,可以用来初始化字典:

dic = defaultdict(int)

  看起来和

dic = {}

  没啥差别,但是,当你要做数值操作,比如加减乘除,计数啥的,就很有用了,以下是对列表chars 计数的操作

chars = ['a', 'b','c','a','d','c']
dd = defaultdict(int) 
for i in chars:
    dd[i] += 1
    print(i,dd[i])

python 字典 dict 该注意的一些操作 随笔 第1张

  当我们取字典中不存在的键值时,会报 KeyError 的错误

f = {"a":1,"b":2}
print(f["c"])

python 字典 dict 该注意的一些操作 随笔 第2张

  此时defaultdict可以对不存在的键赋值,通过传入不同的变量类型,相应的也会输出不同类型变量,如果要制定特定值的话,需要加上lambda 匿名函数

python 字典 dict 该注意的一些操作 随笔 第3张python 字典 dict 该注意的一些操作 随笔 第4张

   总结defaultdict 的用处:1)初始化字典   2)对不存在的键赋值

 

  

  

 

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄