python中的排序函数写入文件

时间:2018-11-07 03:23:35

标签: python

任务:

  

您的程序应从文件中读取,并存储名称和   字典中相应的电子邮件地址作为键值对。   然后,程序应显示一个菜单,让用户输入   数字1到5,每个数字对应一个不同的菜单项:   当用户输入5时,程序应输入名称和电子邮件   按名字的字母顺序地址   phonebook.out您可以使用sorted()函数来接受   字典参数根据Key对字典进行排序

这是我的代码:

def write_to_file(contact):
    file = open("phonebook.out", "w")
    contactsort = dict(sorted(contact.items()))
    phonebook.write(contact)
    phonebook.close  

但是,此代码无法正常工作。我不确定为什么,因此可以提供任何帮助。谢谢。

3 个答案:

答案 0 :(得分:1)

您尝试过json文件吗? 像这样:

import json
filename = "phonebook.json"
def write_to_file(contact):
    with open(filename, 'w') as f_obj:
        contactsort = dict(sorted(contact.items()))
        json.dump(contact, f_obj)

答案 1 :(得分:0)

这是您的代码:

def write_to_file(contact):
    file = open("phonebook.out", "w")
    contactsort = dict(sorted(contact.items()))
    phonebook.write(contact)
    phonebook.close

如@Cheche所述,您将输出声明为file,但将其用作phonebook。只需将file = open("phonebook.out", "w")替换为phonebook = open("phonebook.out", "w")。另外,您将已排序的名称存储到contactsort,但将contact写入文件。附带说明一下,phonebook.close必须为phonebook.close(),并带有括号以调用该函数。

dict进行排序的方式不正确。试试:

contactsort = {key: contact[key] for key in sorted(contact.iterkeys())}

此外,您应尽可能尝试使用withwith会为您关闭文件。最终代码:

def write_to_file(contact):
    with open("phonebook.out", "w") as phonebook:
        contactsort = {key: contact[key] for key in sorted(contact.iterkeys())}
        phonebook.write(str(contactsort))

答案 2 :(得分:-2)

def write_to_file(contact):
    phonebook = open("phonebook.out", "w")
    contactsort = dict(sorted(contact.items()))
    phonebook.write(str(contactsort))
    phonebook.close()    
write_to_file({"name":9090909090, "name_a":8080808080})

你去哪里