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

时间:2015-03-01 14:42:28

标签: python list tuples

我将有关电话的数据加载到名为'记录的名单元素列表中。每个电话都有变量' call_duration'中有关通话时长的信息。但是,有些变量设置为None。我想在所有记录中用零替换None,但以下代码似乎不起作用:

for r in records:
        if r.call_duration is None:
            r = r._replace(call_duration=0)

如何替换列表中的值?我想问题是新的' r'没有存储在列表中。捕获列表中的更改的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用records列表中的索引替换旧记录。您可以使用enumerate()获取该索引:

for i, rec in enumerate(records):
    if rec.call_duration is None:
        records[i] = rec._replace(call_duration=0)

答案 1 :(得分: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)