我有一本以键为元组的字典,我想编写一个不带引号和括号的文件。
我尝试使用var a = new A() {
B = new B() {
SomeProperty = "Some Value"
}
};
context.As.Add(a);
context.SaveChanges();
。
",".join(map(str, key))
我明白了:
import csv
d={(1, 1, 1): 600, (5, 5, 5): 700, (4, 4, 4): 800}
with open("out.csv", "wb") as f:
w = csv.writer(f)
for key,items in d.items():
w.writerow([key,items])
我希望这样:
"(1, 1, 1)",600
"(5, 5, 5)",700
"(4, 4, 4)",800
答案 0 :(得分:5)
您需要解压缩键值才能将其放入列表。 ie(1,2,1)-> 1,2,1并将此列表传递给writerow
函数。
您当前的代码[(1,1,1),600]
中的
将作为提要,并且将其视为2个元素列表,因此会产生上述输出。
您需要将键值[(1,1,1),600]
分解为[1,1,1,600]
可以使用*
操作者[*(1,1,1),600]
还有open
处于w
模式而不是wb
二进制模式,因为您以ASCII格式而不是二进制格式提供数据
import csv
d={(1, 1, 1): 600, (5, 5, 5): 700, (4, 4, 4): 800}
with open("out.csv", "w") as f:
w = csv.writer(f)
for key,items in d.items():
w.writerow([*key,items])
否则,您可以使用(如果不想用*
拆包
import csv
d={(1, 1, 1): 600, (5, 5, 5): 700, (4, 4, 4): 800}
with open("out.csv", "w") as f:
w = csv.writer(f)
for key,items in d.items():
lis = [i for i in key]+[items]
w.writerow(lis)