Python麻烦调试i / 0,我如何获得正确的格式?

时间:2017-04-18 01:57:35

标签: python-3.x dictionary io fwrite

我正在尝试将字典转换为格式化字符串,然后将其写入文件,但是我的整个格式似乎不正确。我不确定如何调试,因为我的所有测试用例都给出了不同的文件。我能够在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”

1 个答案:

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