将字典列表中的字典值写入新的列

原谅我。 我对Python很陌生。

我有一个我想要写入Excel电子表格的字典列表。 我知道每个词典将包含多less个键,每个词典将具有相同的键。 我想通过无数的字典获得列A中的键和列B中的值。 我的代码到目前为止:

for each in stock_data: with open('output.csv', 'wb') as output: writer = csv.writer(output) for key, value in each.iteritems(): writer.writerow([key, value]) 

但是,每次迭代都会覆盖前一个。 在此先感谢您的帮助。

编辑:在那些花时间来回答的帮助下,我结束了这个(词典的价值是元组):

 with open('output.csv', 'wb') as output: fieldnames = ['Volume', 'Symbol', 'Adj_Close', 'High', 'Low', 'Date', 'Close', 'Open'] writer = csv.DictWriter(output, fieldnames=fieldnames) writer.writeheader() writer = csv.writer(output) for each in stock_data: temp_list = [] for value in each.iteritems(): value = list(value) temp_list.append(value[1]) writer.writerow(temp_list) 

你想把你的循环放在open语句中,这样你就不会为每次迭代closures和打开文件:

 with open('output.csv', 'wb') as output: writer = csv.writer(output) for each in stock_data: for key, value in each.iteritems(): writer.writerow([key, value]) 

您的初始for循环每次打开文件w ,从而覆盖数据。 尝试使用附加。

要解决您的修改问题 – 首先制作一个包含所有字典的列表

 list_of_dicts = [{'a': 0.26677069056418323, 'b': 0.8343139335624713, 'c': 0.93725104506273127, 'd': 0.12143573904160743, 'e': 0.98963812790339856}, {'a': 0.40332934706524204, 'b': 0.12289641894313152, 'c': 0.15252859039025357, 'd': 0.24458514688306432, 'e': 0.97469243562553942}, {'a': 0.1878765127021168, 'b': 0.81273464692942443, 'c': 0.90229778310411091, 'd': 0.6172062385825835, 'e': 0.32644941601058663}] for key in list_of_dicts[0]: #this iterates through all the keys #makes a row using the same key for each dict in the list row = [d[key] for d in list_of_dicts] writer.writerow(row) 

或者,你可以把它作为一个单行的:

 writer.writerows(([d[k] for d in list_of_dicts] for k in d))