我想在更新键的值之前测试字典中是否存在键.

if 'key1' in dict.keys():
  print "blah"
else:
  print "boo"

我认为这不是完成这项任务的最佳方式.有没有更好的方法来测试字典中的键?

推荐答案

in是测试dict中是否存在密钥的预期方法.

d = {"key1": 10, "key2": 23}

if "key1" in d:
    print("this will execute")

if "nonexistent key" in d:
    print("this will not")

如果想要默认值,可以始终使用dict.get():

d = dict()

for i in range(100):
    key = i % 10
    d[key] = d.get(key, 0) + 1

如果您希望始终确保任何键的默认值,您可以重复使用dict.setdefault()collections模块中的defaultdict,如下所示:

from collections import defaultdict

d = defaultdict(int)

for i in range(100):
    d[i % 10] += 1

但总的来说,in关键字是最好的方法.

Python相关问答推荐

scikit-learn导入无法导入名称METRIC_MAPPING64'

将输入管道传输到正在运行的Python脚本中

如何制作10,000年及以后的日期时间对象?

管道冻结和管道卸载

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

如何在虚拟Python环境中运行Python程序?

OR—Tools中CP—SAT求解器的IntVar设置值

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

使用特定值作为引用替换数据框行上的值

网格基于1.Y轴与2.x轴显示在matplotlib中

如何创建引用列表并分配值的Systemrame列

使用字典或列表的值组合

GPT python SDK引入了大量开销/错误超时

如何在Polars中创建条件增量列?

如何在Quarto中的标题页之前创建序言页

我如何为测试函数的参数化提供fixture 生成的数据?如果我可以的话,还有其他 Select 吗?

如何使用count()获取特定日期之间的项目

S最大值除以最小值,然后减1的结果是什么?

颂歌中的线性插值法(盖柯)

如果init被重载,如何输入提示一个基于init的函数的返回类型