Python AttributeError: 'dict' object has no attribute 'append'

123,081

Like the error message suggests, dictionaries in Python do not provide an append operation.

You can instead just assign new values to their respective keys in a dictionary.

mydict = {}
mydict['item'] = input_value

If you're wanting to append values as they're entered you could instead use a list.

mylist = []
mylist.append(input_value)

Your line user['areas'].append[temp] looks like it is attempting to access a dictionary at the value of key 'areas', if you instead use a list you should be able to perform an append operation.

Using a list instead:

user['areas'] = []

On that note, you might want to check out the possibility of using a defaultdict(list) for your problem. See here

Share:
123,081

Related videos on Youtube

anonymous
Author by

anonymous

Updated on December 04, 2021

Comments

  • anonymous
    anonymous over 2 years

    I am creating a loop in order to append continuously values from user input to a dictionary but i am getting this error:

    AttributeError: 'dict' object has no attribute 'append'
    

    This is my code so far:

        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]
    

    Any ideas?

    • Daniel Roseman
      Daniel Roseman over 6 years
      Well, a dict doesn't have an append method. And even if it did, you couldn't call it with square brackets.
    • RandomB
      RandomB over 6 years
      use defaultdict instead (with list in it)
    • JacobIRR
      JacobIRR over 6 years
      You assign values to a dict using its key like this : user['areas'] = temp. Your code would only work IF user[areas] was already a list. If you need it to be a list, construct the list first, THEN assign that list to the key.
  • Matt Morgan
    Matt Morgan over 6 years
    Dictionaries in Python do provide an update method though. So, if you want to add more key-value pairs: dict.update({'another_key': 'another_value'}). Maybe of value here. update will overwrite existing keys of the same name, so caveat emptor.
  • Shane Williamson
    Shane Williamson over 6 years
    Very true Matt! Although, it looks like they're trying to just append values here.
  • João Ciocca
    João Ciocca about 3 years
    you should at least add a link to which answer from stackoverflow you're refering to