### Python 字典常用方法总结
字典(`dict`)是Python中一种非常重要的数据结构,用于存储键值对。以下是字典的一些常用方法及其详细说明:
#### 1. 添加与修改数据
- **通过键直接赋值**:可以通过键直接为字典添加或修改键值对。
```python
d = {'a': 1, 'b': 2}
d['c'] = 3 # 添加新键值对
d['a'] = 0 # 修改已有键的值
print(d) # 输出:{'a': 0, 'b': 2, 'c': 3}
```
- **`update()` 方法**:可以一次性更新多个键值对。
```python
d = {'a': 1, 'b': 2}
d.update({'b': 3, 'c': 4})
print(d) # 输出:{'a': 1, 'b': 3, 'c': 4}
```
- **`setdefault()` 方法**:当键不存在时,设置默认值并返回该值;若键已存在,则返回其对应的值。
```python
d = {'a': 1}
value = d.setdefault('b', 2)
print(value) # 输出:2
print(d) # 输出:{'a': 1, 'b': 2}
```
#### 2. 获取键、值和键值对
- **`keys()` 方法**:返回字典中所有键的视图对象。
```python
d = {'a': 1, 'b': 2, 'c': 3}
print(d.keys()) # 输出:dict_keys(['a', 'b', 'c'])
```
- **`values()` 方法**:返回字典中所有值的视图对象。
```python
d = {'a': 1, 'b': 2, 'c': 3}
print(d.values()) # 输出:dict_values([1, 2, 3])
```
- **`items()` 方法**:返回字典中所有键值对的视图对象。
```python
d = {'a': 1, 'b': 2, 'c': 3}
print(d.items()) # 输出:dict_items([('a', 1), ('b', 2), ('c', 3)])
```
#### 3. 获取值
- **通过键获取值**:使用键直接获取对应的值,若键不存在则会抛出 `KeyError` 异常。
```python
d = {'a': 1, 'b': 2}
print(d['a']) # 输出:1
try:
print(d['c'])
except KeyError as e:
print(e) # 输出:'c'
```
- **`get()` 方法**:通过键获取值,若键不存在则返回指定的默认值。
```python
d = {'a': 1, 'b': 2}
print(d.get('a')) # 输出:1
print(d.get('c', -1)) # 输出:-1
```
#### 4. 删除操作
- **`pop()` 方法**:删除指定键的键值对,并返回对应的值。
```python
d = {'a': 1, 'b': 2, 'c': 3}
value = d.pop('b')
print(value) # 输出:2
print(d) # 输出:{'a': 1, 'c': 3}
```
- **`popitem()` 方法**:随机删除一个键值对,并返回该键值对。
```python
d = {'a': 1, 'b': 2, 'c': 3}
key, value = d.popitem()
print(key, value) # 输出:c 3
print(d) # 输出:{'a': 1, 'b': 2}
```
- **`del` 语句**:删除指定键的键值对。
```python
d = {'a': 1, 'b': 2, 'c': 3}
del d['b']
print(d) # 输出:{'a': 1, 'c': 3}
```
#### 5. 判断键是否存在
- 使用 `in` 关键字判断键是否存在于字典中。
```python
d = {'a': 1, 'b': 2}
print('a' in d) # 输出:True
print('c' in d) # 输出:False
```
#### 6. 复制字典
- **`copy()` 方法**:创建字典的一个浅拷贝。
```python
d = {'a': 1, 'b': 2}
d_copy = d.copy()
print(d_copy) # 输出:{'a': 1, 'b': 2}
```
#### 7. 清空字典
- **`clear()` 方法**:清空字典中的所有键值对。
```python
d = {'a': 1, 'b': 2}
d.clear()
print(d) # 输出:{}
```
#### 8. 嵌套字典遍历
对于嵌套字典,可以通过嵌套循环访问内部数据[^2]。
```python
dictionary = {
'apple': {'释义': '苹果', '词性': '名词'},
'grape': {'释义': '葡萄', '词性': '名词'}
}
for word, infos in dictionary.items():
meaning = infos['释义']
pos = infos['词性']
print(f'{word}: {meaning}-{pos}')
```
### 注意事项
- 在多线程环境中,字典的操作并不是线程安全的,需要额外的同步机制[^3]。
- 使用 `setdefault()` 方法时,若未指定默认值,则默认为 `None`[^1]。