任务:
您的程序应从文件中读取,并存储名称和 字典中相应的电子邮件地址作为键值对。 然后,程序应显示一个菜单,让用户输入 数字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
但是,此代码无法正常工作。我不确定为什么,因此可以提供任何帮助。谢谢。
答案 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())}
此外,您应尽可能尝试使用with
。 with
会为您关闭文件。最终代码:
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})
你去哪里