此stackoverflow question答案将列表字典写入CSV文件。我的用例是将类似的列表字典写入CSV字符串而不是文件中。如果我遵循
csvfile += ",".join(csvdata.keys())
for values in csvdata.values():
csvfile += ",".join(value for value in values) + "\n"
这给了我所有扩展到不同行的列表。取而代之的是,我正在寻找带有字典键作为列标题并且键的值(在列表中)与其列值相同的输出。
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:在此处解释重复的请求。问题“ How do I write data into csv format as string (not file)? ”用于不同的用例,而我的问题仅针对特定的用例。
答案 0 :(得分:4)
this.appAvailability.check('com.facebook.katana').then(
() => {// facebook is installed
window.open('fb://page/my_app_123_id’, '_system', 'location=no');
},
() => {//no: boolean
// lead to website instead of app if facebook app does not exists
window.open('https://www.facebook.com/my_app_123/', '_blank', 'location=yes');
}
);
中每个values
都是其对应键/列的值的列表,因此您可以有效地将表的列打印为行。
相反,通过csvdata.values()
设置值列表来构造行:
zip
输出:
csvfile += ",".join(csvdata.keys()) + "\n"
for row in zip(*csvdata.values()):
csvfile += ",".join(row) + "\n"
答案 1 :(得分:0)
我建议使用csv
module和io.String
,而不是对字符串进行操作(用逗号和换行符将它们连接在一起),而不是习惯做法和更简洁的方法:
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)
这给出了:
ID,Name,Gender
101,X,M
102,Y,F
参考文献: