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
Related videos on Youtube
Author by
anonymous
Updated on December 04, 2021Comments
-
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 over 6 yearsWell, a dict doesn't have an append method. And even if it did, you couldn't call it with square brackets.
-
RandomB over 6 yearsuse defaultdict instead (with list in it)
-
JacobIRR over 6 yearsYou assign values to a dict using its key like this :
user['areas'] = temp
. Your code would only work IFuser[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 over 6 yearsDictionaries 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 over 6 yearsVery true Matt! Although, it looks like they're trying to just append values here.
-
João Ciocca about 3 yearsyou should at least add a link to which answer from stackoverflow you're refering to