【发布时间】:2015-02-04 09:33:13
【问题描述】:
我有这段代码,我通过递增循环填充 defaultdict 列表,但问题是输出。我是一个列表,其中包含仅读取而不是枚举位置的值,因为我必须将其写入 CSV 文件。这是填充列表的循环
m = defaultdict(list)
for j in range (0, len(names)):
with open(names[j]) as f:
reader = csv.reader(f, delimiter=',')
reader.next()
for row in reader:
for (i,v) in enumerate(row):
columns[i].append(v)
m[j]=max(columns[1], key=float)
我的问题是这里显示的输出
(0, '1.8768e-02'), (1, '2.4838e-02'), (2, '3.4145e-02'), (3, '4.6328e-02'), (4, '5.3245e-02'), (5, '6.0994e-02'), (6, '5.7532e-02'), (7, '6.2890e-02'), (8, '6.6898e-02'), (9, '8.2745e-02'), (10, '5.8015e-02')
如何编辑代码以只允许存储值而不枚举每个文件的最大值?
【问题讨论】:
-
columns 是一个 defaultdict 列表,它读取整列的值并允许程序找到该列的最大值
-
是m的输出
-
这是
m.items()的输出吗?如果是这样,这是完全正常的!数字1、2等是key,即j,文件号,不是i,enumerate生成的行号。 -
但是是否可以将其写入 csv 文件而无需同时写入这些数字?因为它似乎并没有只用 writer.writerow(m) 来做到这一点
-
你为什么要使用
defaultdict?看来您可以将m设为一个普通列表,然后附加到该列表中。另外,请显示更多代码,这样我们就不必猜测了!