替换命名元组列表中的变量值
Replacing value of variable in list of named tuples
我正在将有关 phone 调用的数据加载到名为 'records' 的命名元组列表中。每个 phone 调用在变量 'call_duration' 中都有关于调用长度的信息。但是,有些变量设置为 None。我想将所有记录中的 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,就对象管理而言,它将对您有帮助。当您想稍后为记录创建方法时,您将能够在 class:
中轻松地这样做
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)
我正在将有关 phone 调用的数据加载到名为 'records' 的命名元组列表中。每个 phone 调用在变量 'call_duration' 中都有关于调用长度的信息。但是,有些变量设置为 None。我想将所有记录中的 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,就对象管理而言,它将对您有帮助。当您想稍后为记录创建方法时,您将能够在 class:
中轻松地这样做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)