📌  相关文章
📜  教资会网络 | UGC-NET CS 2017 年 11 月 – III |问题 67(1)

📅  最后修改于: 2023-12-03 15:10:16.624000             🧑  作者: Mango

UGC-NET CS 2017年11月-III问题67

问题67 的原文:某人正在编写一个 Python 代码段。在运行时,该程序由于“KeyError”而失败了。以下是出错的代码行:

d = {"john":40, "peter":45}
print(d["peter"])
print(d["george"])

请选出正确的选项,以使程序可以顺利运行。

A. d["george"] = None

B. d.setdefault("george", None)

C. d.get("george", -1)

D. d.update({"george":None})

返回markdown格式的答案如下:

## KeyError

KeyError是一个Python默认的异常类型,当尝试使用字典中不存在的键时,将会引发此异常类型。

在这个解决方案中,我们已经确定代码中“KeyError”的原因是字典中没有“george”的键。此时,可以采用以下四种方法中的一种来解决问题。

### 选项A

```python
d["george"] = None

选项A会将字典d中第一个'name'为'george'的值设为None。试图访问不存在的键仍会引发KeyError。

选项B
d.setdefault("george", None)

选项B将在字典d中添加一项新的{'george': None}。因为使用了setdefault方法,当字典中不存在指定的键时,该方法会将指定的值None添加到字典中,并返回该值。所以,在这个解决方案中,'d.setdefault(“george”, None)'将添加一个新键值,其值为None。

选项C
d.get("george", -1)

选项C使用了字典对象的.get方法,用于访问字典d中的键'george'。此方法返回键对应的值,如果字典中不存在'george'键,则返回指定的默认值。在这个解决方案中,'d.get(“george”, -1)'返回None。

选项D
d.update({"george":None})

选项D使用了字典对象的update方法,用来更新字典中内容,传参为一个字典。此方法将在字典d中添加一个新项{'george': None}。

如果我们稍微修改原始代码,使其输出选项B,就可以避免KeyError异常:

d = {"john":40, "peter":45}
print(d["peter"])
d.setdefault("george", None)
print(d["george"])