Python AttributeError: ‘dict’ object heeft geen attribuut ‘append’

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

Other episodes