Ik maak een lus om continu waarden van gebruikersinvoer toe te voegen aan een woordenboek, maar ik krijg deze foutmelding:
AttributeError: 'dict' object has no attribute 'append'
Dit is mijn code tot nu toe:
for index, elem in enumerate(main_feeds):
print(index,":",elem)
temp_list = index,":",elem
li = {}
print_user_areas(li)
while True:
n = (input('\nGive number: '))
if n == "":
break
else:
if n.isdigit():
n=int(n)
print('\n')
print (main_feeds[n])
temp = main_feeds[n]
for item in user:
user['areas'].append[temp]
Enig idee?
Antwoord 1, autoriteit 100%
Zoals de foutmelding suggereert, bieden woordenboeken in Python geen toevoegbewerking.
Je kunt in plaats daarvan gewoon nieuwe waarden toewijzen aan hun respectievelijke sleutels in een woordenboek.
mydict = {}
mydict['item'] = input_value
Als u waarden wilt toevoegen terwijl ze worden ingevoerd, kunt u in plaats daarvan een lijst gebruiken.
mylist = []
mylist.append(input_value)
Uw regel user['areas'].append[temp]
ziet eruit alsof deze probeert toegang te krijgen tot een woordenboek met de waarde van key 'areas'
, als u gebruik in plaats daarvan een lijst waarmee u een toevoegbewerking zou moeten kunnen uitvoeren.
In plaats daarvan een lijst gebruiken:
user['areas'] = []
Wat dat betreft, wil je misschien de mogelijkheid bekijken om een defaultdict(list)
voor je probleem te gebruiken. Zie hier
Antwoord 2
Ofwel
gebruik dict.setdefault() als de sleutel nog niet aan het woordenboek is toegevoegd:
dict.setdefault(key,[]).append(value)
of gebruik, als je de sleutels al hebt ingesteld:
dict[key].append(value)
bron: stackoverflow-antwoorden