簡體   English   中英

Python:如何向 csv 寫入“在線”列表的字典?

[英]Python: How to write to csv a dict of list “in line”?

我希望將我的列表字典寫入 csv 文件,我需要按鍵名對行進行排序:

import csv

dict_of_list = {"key1": [1,2,3], "key2": [4,5,6], "key3": [7,8,9]}

#line bugged corrected bellow:
# keys = sorted(dict_of_list.keys())
writer.writerows(sorted([k, *vs] for k, vs in dict_of_list.items()))


with open("P:/Code/Python/CSV/dict_of_list.csv", "w") as tmp:
    writer = csv.writer(tmp)
    writer.writerows(zip(dict_of_list.items()))

我需要像這樣訂購 csv 文件:

key1, 1, 2, 3
key2, 4, 5, 6
key3, 7, 8, 9

實際上我的 output csv 是:

"('key1', [1, 2, 3])"
"('key2', [4, 5, 6])"
"('key3', [7, 8, 9])"

我試過其他代碼,但我只能把鑰匙放在 header 或者根本沒有鑰匙。

如果有人能給我一個推動,我將不勝感激。

問題是您正在編寫元組,而是這樣做:

import csv

dict_of_list = {"key2": [4, 5, 6], "key3": [7, 8, 9], "key1": [1, 2, 3], }

with open("output.csv", "w") as tmp:
    writer = csv.writer(tmp)
    writer.writerows([k, *vs] for k, vs in sorted(dict_of_list.items()))

Output

key1,1,2,3
key2,4,5,6
key3,7,8,9

表達方式:

[k, *vs] for k, vs in dict_of_list.items()

創建一個列表,其中第一個元素是鍵,元素的 rest 是值。 更新*vs解包列表的元素,請參見此處 如果您希望元素按鍵排序,請按照@tdelaney 的建議執行此操作:

writer.writerows(sorted([k, *vs] for k, vs in dict_of_list.items()))

您可以使用pandas庫代替自己管理文件的寫入。

為此,您只需從字典中創建一個 pandas DataFrame (如表格),方向設置為orient=index ,因為您的字典鍵應該用作表格的行。 然后你只需使用 DataFrame 方法to_csv來編寫你的 csv 文件。 當您不想要 header 時,可以使用header=False參數。

import pandas as pd
df = pd.DataFrame.from_dict(dict_of_list, orient="index").sort_index()
df.to_csv("test.csv", sep=";", header=False)

這個問題也可以使用pandas的方法to_csv()來解決

import pandas
dict_of_list = {"key1": [1,2,3], "key2": [4,5,6], "key3": [7,8,9]}

df = pandas.DataFrame(dict_of_list)
df.T.sort_index().to_csv("test.csv",sep=";",header=False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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