python - 如何正确写入带有 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))
我应该如何改进我的代码?提前致谢。
解决方案
你的代码很好,只是使用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))
推荐阅读
- ios - Swift 单元测试:检查同一类的两个对象是否相等
- python-3.x - 将 csv 文件读取到 jupyter 时忽略索引
- c# - 在 asp.net 核心中使用 VerifyHashedPassword 时出现 NullReferenceException
- java - Ant 构建和 Eclipse 构建不同的结果
- c++ - Windows/C++ -- 将图标渲染为具有透明度的位图
- google-apps-script - 使用 Selection 的 RangeElements 获取 Google Doc 中的所有嵌套文本元素
- javascript - 将上下文信息绑定到 GraphQL 类型?
- permissions - 使用无服务器框架对 lambda 函数的 Cognito 权限
- c++ - 将指针设置为 null 会产生运行时错误
- python-3.x - 如何获取文章的:作者、上传和更新日期?