我有这段代码,通过递增循环来填充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')
我该如何编辑代码以仅允许存储值而不枚举每个文件的最大值?
不确定我是否完全了解您在做什么。在我从您的代码和注释中收集信息时,您正在从中的许多CSV文件中收集值defaultdict m
,然后将其写入另一个CSV文件中。
您似乎可以使用writer.writerow(m.items())
。这样,CSV文件将包含dict中的键,因为这正是items
返回的内容:(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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句