我正在尝试将字典转换为格式化字符串,然后将其写入文件,但是我的整个格式似乎不正确。我不确定如何调试,因为我的所有测试用例都给出了不同的文件。我能够在python中使用交互模式来找出我的函数实际写入文件的内容,而男人是如此错误!你能帮我正确格式吗?
鉴于已排序的字典,我将其创建为字符串。我需要函数来返回它:
字典是:{'orange':[1,3],'apple':[2]}
"apple:\t2\norange:\t1,\t3\n"
格式是:字典的每个键值对 应输出为:以key开头的字符串,后跟“:”,一个制表符,然后是来自的整数 价值表。每个整数后面都应跟一个“,”和一个标签,除了最后一个,后面应该跟一个换行符
这是我认为可行的功能:
def format_item(key,value):
return key+ ":\t"+",\t".join(str(x) for x in value)
def format_dict(d):
return sorted(format_item(key,value) for key, value in d.items())
def store(d,filename):
with open(filename, 'w') as f:
f.write("\n".join(format_dict(d)))
f.close()
return None
我现在在最后一行有太多标签了。如何仅在for循环中编辑最后一行?
ex input:
d = {'orange':[1,3],'apple':[2]}
我的函数给出:['apple:\ t2','orange:\ t1,\ t3']
但应该给:“apple:\ t2 \ norange:\ t1,\ t3 \ n”
答案 0 :(得分:1)
在format_item的return语句末尾添加换行符似乎会产生正确的输出。
return key+ ":\t"+",\t".join(str(x) for x in value) + '\n'
In [10]: format_dict(d)
Out[10]: ['apple:\t2\n', 'orange:\t1,\t3\n']