Python defaultdict 列表编号

Python defaultdict list numbering

我有这段代码,我通过递增循环填充 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 文件将包含字典中的键,因为这正是 items returns:字典中所有 (key, value) 对的列表。如果您只想获得值,可以使用 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)