我目前有一個詞典列表,其中詞典包含按類似關鍵字排序的列表。每個字典中的列表長度相同,但是從字典到字典各不相同,並且每個字典中都有相同數量的關鍵字。從多個詞典中提取到csv
dicts[file1] = {Header1:[1,2,3], Header2:[4,5,6],... etc}
dicts[file2] = {Header1:[7,8,9,0], Header2:[4,3,7,7],... etc}
...
dicts[filen] = {...}
我想提取列表的各兩名,字典(說「頭1」和「Header5」),並與該人名單填寫空格把它們放在一個.csv文件並排沒有其他人那麼長。
我幾乎100%確定要做到這一點,我想使用izip_longest,但我正在用izip_longest的正確格式來完成這一點。我想我的主要問題是我不知道應該把什麼放到*參數中來正確地循環。
任何幫助將不勝感激。
編輯:代碼的請求。
writefiel = open(somefile.csv, delimiter=',')
xcolumn = 'Header1'
ycolumn = 'Header5'
for i in len(dicts):
for lines in izip_longest(*dicts[i][xcolumn], fillvalue=['']*2):
writefile.writerow([dicts[i][xcolumn],dicts[i][ycolumb]])
這只是行不通,但我一直在我的頭上格式化,並沒有能夠找出我不正確的做法。
csv輸出我想看起來像這樣。
Header1,Header5,Header1,Header5,Header1,Header5,...
1,2,4,6,3,8...
1,2,,,3,8,...
答:
首先感謝大家給我一隻手。這是我結束了。如果你看到任何可以改善它的方式,我都會很喜歡聽到它,所以我可以提高自己的技能。
xhold =(list(izip_longest(*(d[xcolumn] for d in dicts), fillvalue='')))
yhold =(list(izip_longest(*(d[ycolumn] for d in dicts), fillvalue='')))
writefile.writerow([xcolumn, ycolumn, '']*len(xhold))
for i in range(len(xhold)):
row=[]
for j in range(len(xhold[i])):
row=row+[xhold[i][j],yhold[i][j],'']
writefile.writerow(row)
你可以發佈你到目前爲止嘗試過的代碼嗎? –
你可以給我們一個輸出結果的樣本嗎? –
我在原文中添加了一些編輯代碼。 – deadstump