Python 如何将列表字典写入字符串而不是CSV文件?

Python 如何将列表字典写入字符串而不是CSV文件?,python,csv,dictionary,Python,Csv,Dictionary,这就解决了将列表字典写入CSV文件的问题。我的用例是将类似的列表字典写入CSV字符串而不是文件。如果我做以下事情 csvfile += ",".join(csvdata.keys()) for values in csvdata.values(): csvfile += ",".join(value for value in values) + "\n" 它是给我所有的列表展开在不同的行。相反,我正在寻找一个输出,其中dictionary键作为列标题,同一个键的值(在列表中)作为其列值

这就解决了将列表字典写入CSV文件的问题。我的用例是将类似的列表字典写入CSV字符串而不是文件。如果我做以下事情

csvfile += ",".join(csvdata.keys())
for values in csvdata.values():
    csvfile += ",".join(value for value in values) + "\n"
它是给我所有的列表展开在不同的行。相反,我正在寻找一个输出,其中dictionary键作为列标题,同一个键的值(在列表中)作为其列值

Input
{'ID' :['101','102'], 'Name': ['X','Y'],'Gender': ['M','F']}

Expected Output (In comma separated string)
ID,   Name, Gender
101,  X,    'M'
102,  Y,    'F'

Output with my code
ID, Name, Gender
101, 102,
X,   Y,
'M', 'F',

编辑#1:在此处解释重复请求。问题“”针对不同的用例,我的问题是针对特定的用例。

csvdata.values()中的每个
值都是对应键/列的值列表,因此您可以有效地将表中的列打印为行

相反,通过
zip
ing值列表来构造行:

csvfile += ",".join(csvdata.keys()) + "\n"
for row in zip(*csvdata.values()):
    csvfile += ",".join(row) + "\n"
输出:

ID,Name,Gender
101,X,M
102,Y,F

与使用字符串执行操作(使用逗号和换行符连接字符串)不同,我建议使用and执行更惯用、更简洁的方法:

这使得:

ID、姓名、性别
101,X,M
102,Y,F

参考资料:


感谢您的回复。结果只存储了第一行,我正在尝试调试它,同时,如果您知道确切的原因,请指出。@SaurabhSaxena在我这方面可以很好地使用您提供的示例输入。检查
csvdata
.csvdata的内容。csvdata看起来与我提供的输入相同,您能告诉我调用zip(*csvdata.values())@SaurabhSaxena see中“*”的重要性吗。它根据需要将
csvdata
中的值列表作为单独的参数传递给
zip
import csv
import io


data = {'ID': ['101', '102'], 'Name': ['X', 'Y'], 'Gender': ['M', 'F']}

with io.StringIO() as output:
    writer = csv.writer(output)
    writer.writerow(data.keys())
    writer.writerows(zip(*data.values()))
    result = output.getvalue()
print(result)