Python 将字典作为用户输入,然后将其保存到json文件中

Python 将字典作为用户输入,然后将其保存到json文件中,python,json,database,dictionary,user-input,Python,Json,Database,Dictionary,User Input,我正在尝试建立一个字典数据库,就像实际的字典一样。用户输入关键字和含义,程序保存在数据库中。就像输入单词:雨一样,输入单词的意思:水滴从云层上落下,然后程序会把它做成一本字典。到目前为止,我可以做到这一点,但它没有工作的方式,我想要的 类Mydictionary: 定义初始化(自): self.key=输入(“请输入单词:”) self.value=输入(“请输入单词的含义:”) def mydictionary(self): self.dic={self.key:self.value} Myd

我正在尝试建立一个字典数据库,就像实际的字典一样。用户输入关键字和含义,程序保存在数据库中。就像输入单词:雨一样,输入单词的意思:水滴从云层上落下,然后程序会把它做成一本字典。到目前为止,我可以做到这一点,但它没有工作的方式,我想要的

类Mydictionary:
定义初始化(自):
self.key=输入(“请输入单词:”)
self.value=输入(“请输入单词的含义:”)
def mydictionary(self):
self.dic={self.key:self.value}
Mydic=Mydictionary()
Mydic.mydictionary()

它只工作一次。我想尽可能多地保存关键字和值。我想创建一个字典数据库

据我所知,正如你所解释的,它工作得很好

如果您认为希望在单个对象中插入多个值,那么这将不起作用,因为您在调用构造函数时只得到一个输入

你必须像这样实施它

import json

class Mydictionary:
    def __inint__(self):
        self.dic = {}

    def mydictionary(self):
        self.key=input("Please input word: ")
        self.value=input("Please input meaning of the word: ")
        self.dic[self.key] = self.value

    def save(self, json_file):
        with open(json_file, "w") as f:
            json.dump(self.dic, f)

Mydic=Mydictionary()
Mydic.mydictionary()
Mydic.mydictionary()

# to save it in a JSON file
Mydic.save("mydict.json")
现在您可以调用该方法n次以添加n个条目


你可以用下面的答案来回答这个问题,我认为这是一个很好的练习。正确地命名函数与它们实际执行的函数是很重要的。

要将新的
-
对插入到词典中,您需要创建一个从用户处获取数据的方法

\uuuu init\uuuu
中,您可以声明一个空字典,然后在
插入
方法中,您可以从用户处获得一个新条目

此外,要显示字典的当前元素,您可以使用name
display
创建一个单独的方法

json
内置可以直接将字典类型的数据从写入和读取到json文件。您可以从中阅读关于
json

输出:

data.json is not created yet
Please input word: rain
Please input meaning of the word: water droplets falling from the clouds
Please input word: fire
Please input meaning of the word: Fire is a chemical reaction that releases light and heat
{'rain': 'water droplets falling from the clouds', 'fire': 'Fire is a chemical reaction that releases light and heat'}
免责声明:这只是类和方法声明和用法的概念。你可以即兴使用这种方法。

试试:

导入json
类别MyDictionary:
__插槽_u=“dic”,
定义初始化(自):
self.dic={}
def附加值(自身):
“”“将值添加到字典中。”“”
键=输入(“请输入单词:”)
值=输入(“请输入单词的含义:”)
self.dic[key]=值
def保存(自我,json_文件):
“”“将词典保存到json文件。”“”
打开(json_文件,“w”)作为f:
json.dump(self.dic,f)
#测试
MyDic=MyDictionary()
MyDic.addvalue()
MyDic.addvalue()
打印(MyDic.dic)#两个元素
保存(“json_file.json”)#保存文件

这将一直接受输入,直到您给它一个空值,然后在您停止时打印出字典。

您所说的“它没有按我想要的方式工作”是什么意思?您的预期和/或意外输出是什么?您面临的问题是什么?它只工作一次。我想尽可能多地保存关键字和值。我想创建一个字典数据库。你不能只使用标准的
dict
?你为什么要定制它?据我所知,您只需要从用户那里获取输入并将其添加到字典中?它只工作一次。我想创建一个数据库。就像它将有很多键和值作为用户输入一样。谢谢,它可以按照我的要求工作,但是现在我想将输出字典保存在json数据库中。你想将它保存为json文件或存储在MongoDB这样的数据库中吗?我是一个编程新手。所以我对数据库有一点了解。我只知道json。所以一个JSON文件它不工作,我得到一个名为AttributeError的错误:部分初始化的模块“JSON”没有属性“dump”(很可能是由于循环导入)@NihadQurbanov,代码工作正常。请确保没有将任何名为
json.py
的文件保存在同一文件夹中。这将导致循环导入错误。好的,我是python新手。如何检查同一文件夹中是否有json.py文件?代码文件存储在哪里?在同一文件夹中,检查是否有任何文件
json.py
。如果答案是肯定的,请将
json.py
重命名为其他名称。您显示的错误与此问题无关。这个答案可能会帮助您:当我运行代码时,它接受值,但不打印它们,而是打印data.json字符串
data.json is not created yet
Please input word: rain
Please input meaning of the word: water droplets falling from the clouds
Please input word: fire
Please input meaning of the word: Fire is a chemical reaction that releases light and heat
{'rain': 'water droplets falling from the clouds', 'fire': 'Fire is a chemical reaction that releases light and heat'}
class dictionary():
    def __init__(self):
        self.dictionary={}

    def insert_word(self,word):
        self.dictionary.update(word)

    def get_word(self):
        word=input("enter a word or enter nothing to exit: ")
        if word=="":
            return None
        meaning=input("enter the meaning: ")
        return {word:meaning}

    def get_dict(self):
        return self.dictionary


if __name__ == "__main__":
    mydict=dictionary()
    word=mydict.get_word()
    while word:
        mydict.insert_word(word)
        word=mydict.get_word()
    print(mydict.get_dict())