PythonDefaultDict列表编号

PythonDefaultDict列表编号,python,enumerate,Python,Enumerate,我有一段代码,通过递增循环填充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:

我有一段代码,通过递增循环填充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')

我如何编辑代码以只允许存储值而不枚举每个文件的最大值?

我不确定我是否完全理解您在那里做什么。当我从您的代码和注释中收集时,您正在从
defaultdict m
中的许多CSV文件中收集值,然后将这些值写入另一个CSV文件

您似乎是通过
writer.writerow(m.items())
来实现这一点的。这样,CSV文件将包括dict中的键,因为这正是返回的内容:字典中所有
(键,值)
对的列表。如果只想获得值,可以使用
m.values()
。请注意,这些值不保证是有序的,但在您的情况下,它似乎是有效的,因为键只是在增加数字。为确保这一点,您可以对项目进行排序,并仅获取值:

writer.writerow([v for (k,v) in sorted(m.items())])
然而,这也意味着您根本不需要字典,更不用说
defaultdict
。只需使用一个普通的旧列表来收集这些值并将该列表写入文件

m = []
# in your read-block:
    m.append(max(columns[1], key=float))
# in your write block:
    writer.writerow(m)

columns是一个defaultdict列表,它读取整列的值,并允许程序查找该列的最大值。这是mIs的输出。
m.items()的输出。
?如果是这样,这是完全正常的!数字
1
2
等是键,即
j
,文件的编号,而不是
i
,由
枚举生成的行的编号。但是是否可以将其写入csv文件而不必同时写入这些数字?因为它似乎不只是用writer.writerow(m)来做这件事,你为什么要使用
defaultdict
?看起来你可以把
m
做成一个普通的列表,然后附加到这个列表中。另外,请显示更多的代码,这样我们就不必猜那么多!