字典的setdefault()
在 Python 中,`setdefault()` 是字典(`dict`)的一个方法,用于设置字典中某个键的默认值。如果键已经存在,则返回该键的值;如果键不存在,则插入该键并设置为默认值。
### **语法**
```python
dict.setdefault(key, default=None)
```
- **`key`**:要查找或设置的键。
- **`default`**(可选):如果键不存在时设置的默认值。如果不指定,默认为 `None`。
### **返回值**
- 如果键存在于字典中,返回该键对应的值。
- 如果键不存在,插入该键并设置为默认值,然后返回默认值。
---
### **示例**
#### 示例 1:基本用法
```python
my_dict = {"name": "Alice", "age": 25}
# 键存在
print(my_dict.setdefault("name")) # 输出:Alice
# 键不存在,设置默认值
print(my_dict.setdefault("city", "New York")) # 输出:New York
print(my_dict) # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}
```
#### 示例 2:键不存在,不设置默认值
```python
my_dict = {"name": "Alice", "age": 25}
# 键不存在,不设置默认值
print(my_dict.setdefault("city")) # 输出:None
print(my_dict) # 输出:{'name': 'Alice', 'age': 25, 'city': None}
```
#### 示例 3:避免 `KeyError`
使用 `setdefault()` 方法可以避免直接访问字典键时可能抛出的 `KeyError` 异常。
```python
my_dict = {"name": "Alice", "age": 25}
# 直接访问可能抛出 KeyError
try:
print(my_dict["city"])
except KeyError:
print("KeyError: 'city' not found")
# 使用 setdefault() 避免 KeyError
print(my_dict.setdefault("city", "Unknown")) # 输出:Unknown
print(my_dict) # 输出:{'name': 'Alice', 'age': 25, 'city': 'Unknown'}
```
---
### **为什么使用 `setdefault()`?**
1. **安全性**:
- 使用 `setdefault()` 方法可以避免直接访问字典键时可能抛出的 `KeyError` 异常,使代码更加健壮。
- 例如,如果你不确定某个键是否存在,使用 `setdefault()` 可以提供一个默认值,而不是让程序崩溃。
2. **灵活性**:
- `setdefault()` 方法允许你指定一个默认值,这在处理缺失数据时非常有用。
- 例如,你可以返回一个默认值(如 `None`、`""` 或 `"Unknown"`),而不是返回 `None`。
3. **简洁性**:
- 使用 `setdefault()` 方法可以使代码更加简洁,避免使用冗长的 `if-else` 语句来检查键是否存在。
---
### **对比:`get()` vs `setdefault()`**
- **`get()`**:
- 用于安全地访问字典中的键值对,返回键对应的值或默认值,但不会修改字典。
- 适用于需要安全访问键值对的场景。
- **`setdefault()`**:
- 用于设置字典中某个键的默认值,如果键不存在,则插入该键并设置为默认值。
- 适用于需要动态设置默认值的场景。
### **总结**
`setdefault()` 方法是字典的一个非常有用的方法,用于设置字典中某个键的默认值。如果键已经存在,则返回该键的值;如果键不存在,则插入该键并设置为默认值。使用 `setdefault()` 方法可以使代码更加安全、灵活和简洁。