我正在将有关电话呼叫的数据加载到名为"记录"的命名元组列表中。每个电话呼叫都在变量"call_duration"中包含有关呼叫长度的信息。但是,有些将变量设置为"无"。我想在所有记录中用零替换None,但以下代码似乎不起作用:
for r in records:
if r.call_duration is None:
r = r._replace(call_duration=0)
如何替换列表中的值?我想问题是新的"r"没有存储在列表中。在列表中捕捉更改的最佳方式是什么?
您可以使用records
列表中的索引来替换旧记录。您可以使用enumerate()
:获取该索引
for i, rec in enumerate(records):
if rec.call_duration is None:
records[i] = rec._replace(call_duration=0)
我建议您创建自己的类,就对象管理而言,它将在未来为您带来好处。当你想稍后为一个记录创建方法时,你可以在一个类中轻松地这样做:
class Record:
def __init__(self, number = None, length = None):
self.number = number
self.length = length
def replace(self, **kwargs):
self.__dict__.update(kwargs)
现在,您可以轻松地管理您的记录,并根据需要替换对象属性。
for r in records:
if r.length is None:
r.replace(length = 0)