def save(val):
w = open(val, "w")
for key in self.bok.iterkeys():
w.write(self.bok[key])
w.write(";")
w.write(key[0])
w.write(";")
w.write("\n")
w.close()
如果我的dict看起来像
bok = {(1,2,3,4,5) : 22}
我想将我的密钥中的所有元组写入文件中的值,所以它看起来像
22;1
22;2
22;3
etc...
目前我只获取我的元组中的第一个值来写入文件22;1
。我知道我是key[0]
得到的,但我无法改变它。
有没有办法让这项工作? 任何帮助表示赞赏。
答案 0 :(得分:2)
我认为你需要在这里嵌套第二个for循环:
for key in self.bok.iterkeys():
for subkey in key:
w.write(self.bok[key])
w.write(";")
w.write(subkey)
w.write(";")
w.write("\n")
w.close()
另外,请考虑使用一些字符串格式:
for key in self.bok.iterkeys():
for subkey in key:
w.write("{};{};\n".format(self.bok[key], subkey))
w.close()
答案 1 :(得分:0)
我强烈建议序列化字典。pickle
模块为此提供支持!一个示例程序:
import pickle ##Import the pickle module
bok = {(1,2,3,4,5) : 22} #Define the dictionary
w = open(val, "wb")#Open the file
pickle.dump(bok, w)#Dump the dictionary bok, the first parameter into the file object w.
w.close()
您必须在" wb"中打开文件模式因为,泡菜是二进制数据。
运行此代码后,文件val
将包含二进制数据。
带回字典:
import pickle#import the pickle module
w=open(val, 'rb')#Open the file
bok=pickle.load(w)#Assign the recreated object to bok
基本上pickle.dump()
将对象转换为可以写入文件的二进制数据。
pickle.load()
读取给定文件并返回重建对象。
这适用于除字典之外的许多python对象,如列表和布尔值。
pickle
的{} http://docs.python.org/3.4/library/pickle.html