2016-12-13 14 views
1

我具有類似於下面的樣品兩個字典寫入兩個字典具有不同值的類型到一個單一的CSV文件:使用Python writerow

# First dictionary 
dict_names = {} 
dict_names[1] = 'Jane' 
dict_names[2] = 'Alex' 
dict_names[3] = 'Max' 

# Second dictionary 
dict_numList = {} 
dict_numList[1] = [i for i in range(50)] 
dict_numList[2] = [2*i for i in range(50)] 
dict_numList[3] = [i*i for i in range(50)] 

我想寫入csv文件,其中每一行包括公共密鑰(在它的第一列,使用excel打開時),第一個字典(在第二列中)的字符串值,第二個字典中列表值的每個元素(在第三列中一直到第52列)。

我已經嘗試了下面的代碼,但它會將整個數字列表寫入第三列。

with open('out.csv', 'wb') as csvfile: 
    csvwriter = csv.writer(csvfile, delimiter = ',') 
    for key, val in dict_names.iteritems(): 
     csvwriter.writerow([key, val, [dict_numList[key][i] for i in range(0,50)]]) 

任何幫助將不勝感激! 感謝

SOLUTION:給出答案,我用下面

with open('out.csv', 'wb') as csvfile: 
    csvwriter = csv.writer(csvfile, delimiter = ',') 
    for key, val in dict_names.iteritems(): 
     csvwriter.writerow([key, val] + dict_numList[key]) 

回答

1

我想NK問題是你,包括一個列表的列表:

[key, val, [array of things]] 

相反的:

[key, val, thing 1, thing 2...] 

你可以簡單地將兩個清單的+運營商追加在一起:

csvwriter.writerow([key, val] + [dict_numList[key][i] for i in range(0,50)]) 
+0

這個工程!謝謝! – user32147

2

如果你的理解是多餘的代碼,但保持它現在,下面的方法就足夠了:

for key, val in dict_names.iteritems(): 
    row = [key, val] 
    row.extend(dict_numList[key][i] for i in range(0,50)) 
    csvwriter.writerow(row) 

真的,我相信你只需要:

for key, val in dict_names.iteritems(): 
    row = [key, val] 
    row.extend(dict_numList[key]) 
    csvwriter.writerow(row) 
+0

很棒!謝謝! – user32147