替换命名元组列表中变量的值



我正在将有关电话呼叫的数据加载到名为"记录"的命名元组列表中。每个电话呼叫都在变量"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)

最新更新