[英]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.