对于可变类型(如list),我们可以处理缺少的关键问题,而不是使用if else
:
dic = {'key1':[1, 2], 'key2':[1]}
dic.setdefault('key3', []).append(1)
只检查'key3'
中的dic
一次。你知道吗
但是对于不可变的类型,例如integer,我们不能像这样使用setdefault()
:
dic = {'key1':3, 'key2':5}
dic.setdefault('key3', 0) += 1
因为setdefault()
将返回整数0
,而不是变量dic['key3']
我不知道如何优雅地处理它,例如,我能做的最好的事情是:
dic = {'key1':3, 'key2':5}
dic['key3'] = 1 if 'key3' not in dic else dic['key3'] + 1
但是这段代码会检查'key3'
中的dic
两次,如果'key3'
存在,也会为dic['key3'] + 1
使用额外的内存。你知道吗
有什么建议吗?你知道吗
您可以使用
.get(..)
指定默认值,例如:.get(key,default=None)
在字典上执行查找。如果它找不到key
,它将返回default
。你知道吗但我认为在这种情况下,你最好使用
Counter
:计数器假定如果数据库中不存在键,则其值为零。你知道吗
相关问题 更多 >
编程相关推荐