首页 > 解决方案 > 如何正确写入带有 fout 功能的输出?

问题描述

我正在尝试使用 python 文件系统读取和写入文件,但我遇到了一些问题。我相信阅读/打开功能是正确的,但写作让我很难过。

我在一个反转字典的函数中执行它,我希望它从文本文件中读取字典,而不是在代码中执行它,这就是我调用它的方式(不是很漂亮但有效):

d = fin = open('dict.txt')

但是,在将倒排字典写入文件时,我失败了。打印反转字典的函数调用是invert_dict(d)所以我认为我应该尝试这样写:

invert_dict(d) = fout = open('output.txt', 'w')

这显然是错误的,但这就是我从读书中得到的。这是我的原始反转字典函数:

def invert_dict(d):
    print(' the dictionary is \n' , d)
    inverse = dict()
    for key in d:
        val = d[key]
        for i in val:
            if i not in inverse:
                inverse[i] = [key]
            else:
                inverse[i].append(key)
    return inverse
d={'vowels':['a','e','i','o','u'], 'letters':['a','b','c','d']}
print(invert_dict(d))

我应该如何改进我的代码?提前致谢。

标签: pythonpython-3.x

解决方案


你的代码很好,只是使用items循环更好,也setdefault更容易:

def invert_dict(d):
    print(' the dictionary is \n' , d)
    inverse = {}
    for k,v in d.items():
        for i in v:
            inverse.setdefault(i,[]).append(k)
    return inverse

编辑:

之前误解了,所以你应该使用:

import json
d = fin = json.loads(open('dict.txt'))
with open('output.txt', 'w') as fout:
    fout.write(invert_dict(d))

推荐阅读