Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何向csv写入列表的dict“;在“行”中;?_Python_Csv - Fatal编程技术网

Python:如何向csv写入列表的dict“;在“行”中;?

Python:如何向csv写入列表的dict“;在“行”中;?,python,csv,Python,Csv,我希望将我的目录列表写入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(

我希望将我的目录列表写入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
实际上,我的输出csv是:

"('key1', [1, 2, 3])"
"('key2', [4, 5, 6])"
"('key3', [7, 8, 9])"
我尝试过其他代码,但我只能将键放在标题中,或者根本没有键


如果有人能推我一下,我将不胜感激。

问题是您正在编写元组,请执行以下操作:

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()))
输出

key1,1,2,3
key2,4,5,6
key3,7,8,9
表达方式:

[k, *vs] for k, vs in dict_of_list.items()
创建一个列表,其中第一个元素是键,其余元素是值。 更新
*vs
解压列表中的元素,请参阅。如果希望元素按键排序,请按照@tdelaney的建议执行此操作:

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

您可以使用
pandas
库,而不是自己管理文件的编写

为此,只需从字典中创建一个数据框(如表),方向设置为
orient=index
,因为字典键应该用作表的行。 然后您只需使用DataFrame方法
来编写csv文件。
当您不需要标题时,可以使用
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)

这个问题也可以通过熊猫的方法来解决


谢谢。这工作做得很好。你能给我解释一下吗:“[k,*vs]代表k,vs”,我不懂*vs。或者一个关于*用法的链接。
keys=sorted(dict\u of_list.keys())
不会对dict进行排序。
writer.writerows([k,*vs]表示k,vs in sorted(dict\u of_list.items())
?@tdelaney第二个选项会对字典进行排序,但第一个示例不会对字典进行排序。我可以建议删除当前的排序行并添加到writerows中吗?@tdelaney请随意编辑问题。你指的是哪一行?我知道熊猫真的很有力量。目前,我将坚持一些图书馆的基本知识。我会努力学习扎实的基础知识。无论如何,谢谢你的建议。
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)