丢失数据重复调用方法

2024-09-26 17:46:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我意识到这个问题在过去曾经被问过也被回答过,但是我在调整我的方法以避免重复调用后的数据丢失方面遇到了困难。你知道吗

我的方法:

def getColumn(self, name):
    index_num = self.headers.index(str(name))
    columns = [item[index_num] for item in self.container]
    acco = self.accounts
    del acco[0]
    del columns[0]
    columns = [item.replace(',', '') for item in columns]
    return dict(zip(acco, columns))

你知道吗自动集装箱是一个具有标头的数组,其格式如下:

[['ACCOUNT', 'VALUE1', 'VALUE2'],
 ['Account1', '3.43', '2.5'],
 ['Account2', '1,235.67', '8.98']]

你知道吗自助账户由return [item[0] for item in self.container定义

我要做的是通过传递一个字符串来匹配其中一个标题名,从而压缩字典中的帐户和值。该方法在标头中查找索引,然后尝试拉出值列并删除标头。你知道吗

对该方法的每次后续调用都会导致字典的长度减少1。当我传入'VALUE1'时,长度是26。当我传递'VALUE2'时,它的长度是25,依此类推。你知道吗

有人能提出一种方法来实现这一点,而不会在随后的方法调用中丢失数据吗?你知道吗


Tags: columns数据方法nameinselfforindex
1条回答
网友
1楼 · 发布于 2024-09-26 17:46:48

我需要看看你的自助账户属性是实际实现的,但我几乎可以肯定您的问题在于使用del内置。使用del的原因很少,特别是在这么简单的情况下,尤其是对于可变类型(即列表),它会导致一些非常奇怪的行为。我猜你的问题在于这两条线:

acco = self.accounts
del acco[0]

有效地做到了这一点:

del self.accounts[0]

您可能会发现这样做可以修复:

acco = self.accounts[:] # makes a shallow copy of self.accounts
del acco[0]

最简单的调试方法是简单地将print语句放在上面和下面,向您显示自助账户对象本身。你知道吗

我仍然建议不要使用del并考虑列表.pop方法。更重要的是,考虑重新实现自动集装箱作为一个字典,作为“列表列表”的方式来建模电子表格数据并不是很有效。你知道吗

相关问题 更多 >

    热门问题