Python Tuple保存到文件

时间:2013-10-21 18:42:49

标签: python dictionary key tuples

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]得到的,但我无法改变它。

有没有办法让这项工作? 任何帮助表示赞赏。

2 个答案:

答案 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

的Python文档