簡體   English   中英

檢查文本文件的字典中是否已存在密鑰

[英]Check if a key already exists in a dict in a text file

我希望用戶輸入一個項目和一個數量,如果該項目已經存在於我的 txt 文件的“數據庫”中,它會將數量添加到已經存在的項目中。

 def item_list():
   my_dict = dict()
   add_item = input("Enter item name: ")
   add_quantity = input("Enter quantity of {0} : ".format(add_item))
   int_quantity = int(add_quantity)
   my_dict[add_item] = int_quantity

   with open("groceries.txt", "a") as text_file:
        if add_item in my_dict.keys():
            print("item {0} already exists".format(add_item))
            addqte = my_dict[add_item]+ int_quantity
            my_dict[add_item] = addqte
            text_file.write(str(my_dict))
        else :
            text_file.write(str(my_dict))
            print(" {0} {1} added  .".format(add_quantity, add_item))
        text_file.close()


show_list()

實際結果:說它已經在字典中並且只是數量翻倍(即使字典在輸入之前為空)並創建一個新鍵

預期結果:應該寫入一個新項目及其數量,或者如果該項目已經在字典中,添加數量輸入但不創建同一項目的另一個實例。

我覺得它需要我新添加的項目並說它已經在字典中,所以它總是 go 在 if 部分。 知道下一步該怎么做嗎?

您需要先將文件中的數據加載到my_dict中。 然后你用新的數量更新字典,最后你從字典中覆蓋整個文件。

def item_list():
    with open("groceries.txt", "r") as text_file:
        my_dict = {item: int(quantity) for item, quantity in map(lambda line: line.split(), text_file)}
    add_item = input("Enter item name: ")
    add_quantity = input("Enter quantity of {0} : ".format(add_item))
    int_quantity = int(add_quantity)
    if add_item in my_dict:
        print("item {0} already exists".format(add_item))
        my_dict[add_item]+= int_quantity
    else:
        my_dict[add_item] = int_quantity
        print(" {0} {1} added  .".format(add_quantity, add_item))

    with open("groceries.txt", "w") as text_file:
        for item, quantity in my_dict.items():
            text_file.write(f"{item} {quantity}\n")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM