簡體   English   中英

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文件將包含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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM