2017-04-15 57 views
-1

我创建了一个功能Python-如何排序文件中的字典并输出特定格式?

  1. 打开一个文件用于写入(文件名)

  2. 鉴于字典写入到该文件(d)

  3. 需要返回排序的字典(asciibetically)作为这种格式的字符串:

    字典的每个键 - 值对
    应输出为:以键开头的字符串,后跟“:”,制表符,然后是值列表中的整数。除了最后一个整数之外,每个整数都应该跟一个“,”和一个制表符,后面应该跟一个换行符。

因此,它应该是这个样子:

d = {'orange':[1,3],'apple':[2]} 

"apple:\t2\norange:\t1,\t3\n" 

如何asciibetically词典的按键排序,并得到这个特定字符串输出?这是我卡住的地方。我知道我应该在某处使用sorted(),但是我所尝试过的所有内容都导致了错误。

这里是我当前的功能:

def store(d,filename): 
    addfile= open('filename', 'w') 
    for key, values in d.items(): 
     line='{},{}'.format(key,values) 
     addfile.write(line, file= addfile) 
    addfile.close() 
    return 

回答

0
def format_item(key, value): 
    return key + ":\t" + ",\t".join(str(x) for x in value) 

def format_dict(d): # returns a sorted list of lines 
    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))) 
+0

你是什么意思,@ kg123?你叫'store' - 给它'd'。然后它将'd'传递给'format_dict'(它进一步利用'format_item')。为什么它不工作? – Tom

+1

酷!随意进一步询问是否仍然不清楚,或者如果它解决了你的问题,接受答案:) – Tom

+0

因此,这是否给我虚假是不正确的? – kg123