那么如何在 namedtuple 不允许修改的情况下存储新信息?
时间: 2024-10-28 11:12:59 浏览: 7
如果你想要在 namedtuple 中存储新信息,但由于它是不可变的,你可以选择以下几种方式:
1. **创建新的 namedtuple 实例**:如果你只需要增加或修改少量信息,可以直接创建一个新的 namedtuple 实例,保留原来的信息并加入新的内容。
```python
original_nt = MyNamedTuple(field1=value1, field2=value2)
new_nt = MyNamedTuple(**original_nt._asdict(), new_field=value3)
```
2. **使用字典**:虽然 namedtuple 不直接支持更新,但是你可以将 namedtuple 转换为字典,然后对字典进行操作后再转换回 namedtuple 形式。
```python
nt_dict = original_nt._asdict()
nt_dict['new_field'] = value3
new_nt = MyNamedTuple(**nt_dict)
```
3. **自定义类**:如果需要频繁地增删改查,可以考虑继承 namedtuple,并在新类中添加相应的方法来处理这类操作,但这会失去 namedtuple 的某些原生便利性。
```python
class ModifiableNamedTuple(namedtuple('MyModifiable', MyNamedTuple._fields), dict):
def update(self, other):
self.update(other._asdict())
```
每种方法都有其适用场景,选择哪种取决于具体需求。
阅读全文