私は現在、インベントリシステムを作成しようとしています。私はそれが私のために辞書を保存するように思えたので、私はpickleを使うと思った。唯一の問題は、今はリストを参照するたびに、リストに別のアイテムを追加するために戻ってきて、そこにあるものを削除します。Python内でのピクルの問題
import pickle
#creates a dictonary
Inventory = {}
product_add = ""
Key = "Key \n+ changes stock, \ni or I shows inventory"
print(Key)
def main():
choice = input("What do you want to do today? ")
if choice == "+":
Change()
else:
inv()
def Change():
product = input("What product do you want to add/change? ")
value = input("How much of it? ")
Inventory.update({product: value})#places into dictonary
pickle.dump(Inventory, open("save.p", "wb"))
continu = input("Would you like to enter any more products into inventory? y/n ")
if continu == "y" or continu == "Y":#allows them to either continue to update inventory or move on
Change()
else:
inv()
def inv():#prints inventory
print()
print()
print()
Inventory = pickle.load(open("save.p", "rb"))
for key,val in sorted(Inventory.items()):#prints the dictonary in a column alphabetized
print(key, "=>", val)
print()
print()
print()
print(Key)
Pass = input("What would you like to do? ")
if Pass == "+":#keeps the program going, and allows them to change the dictonary later
Change()
else:
main()
main()
あなたが期待している動作と観察しているさまざまな動作を正確に記述できますか? (私はちょっと遊んだし、テストしたものはうまくいった) –
辞書に一意のキーを追加していることを確認してください。 Python辞書の項目はキーで参照されます。アイテムは基本的にキーと値のペアです。キーは辞書内で常に一意です。既にそこにあるキーを追加しようとすると、Pythonは文句を言わないでしょう。プログラムの制限は、(まだ)一連の値(つまり、特定の製品の複数のインスタンス)に対応できないことです。 –
また、Pythonでは関数名と変数名を小文字で記述したいと思うでしょう。 –