在Python中循环追加多个列表到单个列表

0 投票
1 回答
1221 浏览
提问于 2025-04-17 08:25

在下面的代码中,row[8]、row[9],一直到row[27]每一行都包含很多数字。我需要把row[8]、row[9]等行中的所有数字分别放到stat_by_symbol这个变量里,作为不同的列表。但是,下面的代码把所有行的数字都放到一个列表里了。

举个例子,如果我调用stat_by_symbol['aaa'][0],那么我应该能得到从row[8]提取出来的数字列表。

我该怎么解决这个问题呢?非常感谢。

补充说明:我附上了一张csv文件的快照。我需要stat_by_symbol['aaa'][0]返回的是Column i下的所有数字。同样,stat_by_symbol的索引为1时,应该返回Column j下的所有数字。

enter image description here

stat_by_symbol = {}
with open('zzdata.csv', 'rb') as f:
    reader = csv.reader(f)
    reader.next()
    for row in reader:
        for symbol in symbols:#symbols in a list
            if symbol in row:
                for i in range(8, 28):
                    stat_by_symbol.setdefault(symbol, []).append(row[i])

1 个回答

0

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个桶倒到另一个桶。

有些时候,我们会遇到一些问题,比如数据的格式不对,或者数据不完整。这就像是你想把水从一个桶倒到另一个桶,但发现桶里有个洞,水漏掉了。

为了避免这些问题,我们可以使用一些工具或方法来检查数据,确保它们是正确的。就像在倒水之前,先检查一下桶有没有破损。

总之,处理数据的时候,要注意数据的质量,确保它们能顺利地从一个地方转移到另一个地方。

stat_by_symbol = dict((symbol, [[] for i in xrange(8,28)]) for symbol in symbols)
with open('zzdata.csv', 'rb') as f:
    reader = csv.reader(f)
    reader.next()
    for row in reader:
        for symbol, symbol_list in stat_by_symbol.iteritems():
            if symbol in row:
                for symbol_list2, cell in zip(symbol_list, row[8:28]):
                    symbol_list2.append(cell)

撰写回答