Python 如何将列表字典写入字符串而不是CSV文件?
这就解决了将列表字典写入CSV文件的问题。我的用例是将类似的列表字典写入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键作为列标题,同一个键的值(在列表中)作为其列值
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)