用Python中的数字类型处理缺少的键

2024-06-17 15:46:27 发布

您现在位置:Python中文网/ 问答频道 /正文

对于可变类型(如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使用额外的内存。你知道吗

有什么建议吗?你知道吗


Tags: 类型ifnot整数integer事情elselist
1条回答
网友
1楼 · 发布于 2024-06-17 15:46:27

您可以使用.get(..)指定默认值,例如:

dic['key3'] = dic.get('key3',0) + 1

.get(key,default=None)在字典上执行查找。如果它找不到key,它将返回default。你知道吗

但我认为在这种情况下,你最好使用Counter

from collections import Counter

counter = Counter({'key1':3, 'key2':5})
counter['key3'] += 1

计数器假定如果数据库中不存在键,则其值为零。你知道吗

相关问题 更多 >