Ich habe bereits eine ähnliche Frage gestellt, aber ich habe nicht die richtige Antwort erhalten, vielleicht weil ich nicht sehr klar darüber war, wie ich mein Programm ausführen soll.Python: Hinzufügen zu einer Liste aus verschiedenen Funktionen
Ich schreibe ein einfaches Geschenk, das Programm hinzufügt, und ich möchte ein Geschenk zu einer Person hinzufügen, die in einem Wörterbuch in einer anderen Funktion ist.
def main():
print("Select: ")
print("\n\n\t1. Gifts")
selection_1 = input()
if selection_1 == "1":
people_list()
return selection
else:
print("Type a number for selecting.")
main()
def people_list():
people = {"Elena":["book","candy","sweater"],
"Daria":["healthy food"],
"Petra and Rok":[],
"Nikola":["cheese"],
"Matija + Elena":["vacation"],
"Christian":["chocolate"]}
print ("""Select a person to show their gifts:
1. Elena
2. Daria
3. Petra and Rok
4. Nikola
5. Matija + Elena
6. Christian
""")
gifts(people)
def gifts(people):
selection_2 = input()
if selection_2 == "1":
person = people["Elena"]
print(people["Elena"])
manage_gifts(person, people)
return person
elif selection_2 == "2":
person = people["Daria"]
print(people["Daria"])
manage_gifts(person, people)
return person
elif selection_2 == "3":
person = people["Petra and Rok"]
print(people["Petra and Rok"])
manage_gifts(person, people)
return person
elif selection_2 == "4":
person = people["Nikola"]
print(people["Nikola"])
manage_gifts(person, people)
return person
elif selection_2 == "5":
person = people["Matija + Elena"]
print(people["Matija + Elena"])
manage_gifts(person, people)
return person
elif selection_2 == "6":
person = people["Christian"]
print(people["Christian"])
manage_gifts(person, people)
return person
else:
print("Choose a person from the list!")
people_list()
return person
def manage_gifts(person, people):
print("""
1. Add gift""")
gift_option = input()
if gift_option == "1":
print("\nType the gift you would like to add?\n")
new_gift = input()
people[person].append(str(new_gift))
print("Gift added: ", people[person])
main()
Ich möchte erreichen, dass das neue Geschenk der "Person" hinzugefügt wird, die ich aus der Liste auswähle. Der Fehler, den ich bekommen ist:
Traceback (most recent call last):
File "E:/Python/Vaje_Book/Gifts.py", line 92, in <module>
main()
File "E:/Python/Vaje_Book/Gifts.py", line 10, in main
people_list()
File "E:/Python/Vaje_Book/Gifts.py", line 36, in people_list
gifts(people)
File "E:/Python/Vaje_Book/Gifts.py", line 46, in gifts
manage_gifts(person, people)
File "E:/Python/Vaje_Book/Gifts.py", line 89, in manage_gifts
people[person].append(str(new_gift))
TypeError: unhashable type: 'list'
Ihnen sehr für Ihre Hilfe danken.
Sie sollten den Wert in einigen der neuen Variablenliste und dann die new_gift anhängen und dann wieder aktualisieren. Wenn Sie das Wörterbuch übergeben möchten, verwenden Sie ** in Argumenten, in denen die Funktion manage_gift definiert ist. – babygame0ver
Von dem, was ich sammeln kann, möchten Sie Dinge wie 'person = people [" Elena "]' in 'gifts()' zu nur 'person =" Elena "usw. ändern. Sie wollen' person' nur einen Namen haben damit du in 'people' nachschaust. Stattdessen gibt 'Leute ['Elena'] dir die Geschenke zurück, die sie bereits haben. – roganjosh