Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不断添加到字典中_Python - Fatal编程技术网

Python 不断添加到字典中

Python 不断添加到字典中,python,Python,我有一个函数,可以在字典中进行更改 a_dict = {"car": ["audi"], "company": ["apple"]} def add_dict(vehicle,brand,stuff): for keyword in stuff: if keyword == vehicle: i

我有一个函数,可以在字典中进行更改

    a_dict = {"car": ["audi"], 
             "company": ["apple"]}

     def add_dict(vehicle,brand,stuff):
         for keyword in stuff:
            if keyword == vehicle:
                 if brand not in stuff[keyword]: 
                    stuff[keyword].append(brand) 
                    break 
            else:
                stuff[vehicle] = [brand] 
                break 
     add_dict("car","bmw",a_dict)      

    print(a_dict)   

此代码将在钥匙“car”中添加“bmw”。但是,当我再次运行代码时,例如使用“mercedes”而不是bmw,它会将字典重置为第一个字典。我希望它继续添加更新的列表。

创建新函数,编辑目录:通过此操作,您可以修改字典中的新键和值(首选方式)


或者添加另一个add_dict call,让Mercedes修改您的字典(不是首选方式)

当您再次运行代码时,您所做的任何更改都将被重置。如果希望数据在两次运行之间保持不变,则必须将其保存到文件中。为此,您可以使用
json

导入json
导入操作系统
从fastapi导入数据结构
DATA\u FILE=“DATA.json”
def load_dict():
如果不是os.path.isfile(数据文件):
返回{“汽车”:[“奥迪”],“公司”:[“苹果”]}
打开(数据_文件,“r”)作为json_文件:
返回json.load(json_文件)
def保存目录(内容):
打开(数据_文件,“w+”)作为json_文件:
dump(stuff,json_文件)
def附加说明(车辆、品牌、材料):
对于stuff中的关键字:
如果关键字==车辆:
如果品牌不在stuff[关键字]中:
stuff[关键字].追加(品牌)
打破
其他:
材料[车辆]=[品牌]
打破
a_dict=加载_dict()
印刷品(抄本)
添加“汽车”、“宝马”一词
印刷品(抄本)
保存目录(a目录)

现在,如果至少有一把钥匙与
车辆不匹配,
else
子句将触发。像这样修复它:

def add_to_dict(product_type, brand, product_dict):
    if product_type in product_dict:
        product_dict[product_type].append(brand)
    else:
        product_dict[product_type] = [brand]

product_dict = {}
add_to_dict("car", "audi", product_dict)
add_to_dict("car", "mercedes", product_dict)
add_to_dict("phone", "apple", product_dict)

print(product_dict)
# Output:
# {"car": ["audi","mercedes"], "phone": ["apple"]}

如果关闭程序并再次启动,内存将被清除,所有数据都将丢失。如果要在后续运行中再次使用它,可以将其保存到文件中。这是在某个循环中还是在一个完整的文件中?如果它是一个完整的文件,那么每次运行该文件时都会重置列表。因此,你认为它已经取代了某些东西。为什么重复使用同一个函数不是首选呢?为什么你想一次又一次地写同一行代码,而不管怎么说,这都没有意义。如果奥迪或日产必须增加新的生产线怎么办?本质上,函数调用应该在需要添加键的时候进行多次。但是,它的开发人员可以选择如何编写代码。尽管有更好的方法,如前所述。如果选择是向现有函数添加另一个调用,或是生成两个不同的函数并同时调用这两个函数,我总是更愿意调用twiceAs所说的函数,这是个人的选择。你可以一次又一次地写同一行代码,以保持代码中的眩目次数,或者使维护变得高效。是的,我完全同意。也许你想说的是,但现在这篇帖子毫无意义,似乎在说相反的话