[英]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文件將包含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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.