Reputation: 361
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?
Upvotes: 34
Views: 212374
Reputation: 11
As the error and the fellows pointed out, there is no 'append' attribute to a 'dict' object.
But if you really see a Python code with the line dict["key"].append(value)
working, it is because there is a list
inside this key, and you want to specifically add values in the list inside the key (not to add new entries to the key itself). Then dict["key"].append(value)
will work anyway.
Upvotes: 1
Reputation: 201
As the error suggests, append
is not a method or attribute, meaning you cannot call append
in the dictionary user
.
Instead of
user['areas'].append[temp]
Use
user['areas'].update[temp]
Upvotes: 4
Reputation: 11114
Either use dict.setdefault() if the key is not added yet to dictionary :
dict.setdefault(key,[]).append(value)
or use, if you already have the keys set up:
dict[key].append(value)
source: stackoverflow answers
Upvotes: -7
Reputation: 371
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
Upvotes: 37