提问者:小点点

由用户输入构建的嵌套词典


我编写了一个可执行程序,它显示用户请求的数据。 数据是从与我相关的信息的嵌套字典中获得的,这些信息被导入到程序中。 它起作用了。 问题:有没有可能有一个程序通过用户输入创建一个数据字典(与用户相关),到一个保存的文件? 我可以让我程序打开该文件并使用它的数据。 我是python的新手,所以我可能不知道我是怎么做的。 保罗


共2个答案

匿名用户

您可以使用内置模块Pickle来完成此操作。 这段代码将允许用户输入一个姓名和一个年龄,并且它将一直询问数据,直到用户没有为年龄输入任何内容:

import pickle
d = {}
while True:
    name = input("Input your name: ") # Ask for name
    if not name: # Break out of the loop when the user enters nothing
        break
    age = int(input("Input your age: ")) # Ask for age
    d.update({name:age}) # Update d with given name and age

with open('dict.pickle','wb') as file: # Open a file to store dictionary
    pickle.dump(d,file) # Use pickle to dump in the dictionary

它将把数据存储在pickle文件中,当您想要使用这些数据时,您可以做以下工作:

import pickle

with open('dict.pickle','rb') as file:
    d = pickle.load(file) # Use pickle to load the dictionary into variable d

print(d)

输出:

{'a': 1, 'b': 2, 'c': 3}

匿名用户

如果我理解正确的话,在Python中有一种方法可以做到这一点。

首先打开保存文件,如下所示:

with open("C:\path\to\the\save\file.pkl", "w") as save_file:
    save_file.write("This is written to the file!")

由于带有satatement,python负责关闭文件处理程序,因此您不必担心这个问题。

我不确定字典的关键字和值是什么,但是让我们假设您有一个用户id和他的数据。 现在只需从用户处读取并将其存储到字典中,如下所示

main_dictionary = {}

id = int(input("Enter user ID> "))
data = input("Input user data> ")
main_dictionary[id] = data

接下来,您希望能够保存并从文件中加载字典。 为此使用pickle库,因为它非常容易使用:

try:
    import cPickle as pickle
except ImportError:  # python 3.x
    import pickle

# stores the dictionary inside the "C:\path\to\the\save\file.pkl"
pickle.dump(main_dictionary, save_file, protocol=pickle.HIGHEST_PROTOCOL)

要加载字典,只需编写:

with open('C:\path\to\the\save\file.pkl', 'rb') as save_file:
    main_dictionary= pickle.load(save_file)

完整的程序应该如下所示:

try:
    import cPickle as pickle
except ImportError:  # python 3.x
    import pickle

main_dictionary = {}

with open("C:\path\to\the\save\file.pkl", "rb") as save_file:
    main_dictionary= pickle.load(save_file)

id = int(input("Enter user ID> "))
data = input("Input user data> ")
main_dictionary[id] = data

with open('C:\path\to\the\save\file.pkl', 'wb') as save_file:
    pickle.dump(main_dictionary, save_file, protocol=pickle.HIGHEST_PROTOCOL)

希望那有用