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

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相关问答推荐

tensorflow 的负巨大损失

Concat 2 具有相同 id 的字典列表

如何从 ortools 导出 MPS 文件?

对元素进行排序以最大化正差异的数量

Pandas :dt.weekday 有效,但 dt.isoweekday 无效

如何使用 ctypes 位域在 Python 中构造 32 位 uint?

如何像我们在 pyspark withColumn 中一样在 pandas 中动态创建新列

通过python在字典内的字典中打印数字

Pandas - 添加新列 - 使用循环

获取集群数量(3D)

如何使用自定义类方法覆盖在元类中定义的特殊方法?

运行多个 LinearRegressions 测试时精度没有增加

如何在 python 中过滤 .json 数组,以便每个元素中只显示一个参数?

在 Python 中访问 Azure Key Vault 时出现意外的关键字参数“tenant_id”

计算区间中素数的算法不起作用

SQLAlchemy:在不同的数据库之间加入并在模块中使用不同的文件

Disnaker/discord.py 无限期等待响应

如何在python中格式化非常小的数字?

从 csv 导入数据 - 无法将字符串转换为浮点数

按日期字段执行合并,而不在 DataFrame 中创建辅助列