iam_agf
iam_agf

Reputation: 689

Add more values to same key

I want to make know if there is a command that can do this:

>>>A=dict()
>>>A[1]=3
>>>A
   {1:3}
>>>A[1].add(5)        #This is the command that I don't know if exists.
>>>A
   {1:(3,5)}

I mean, add another value to the same key without quiting the old value added. It is possible to do this?

Upvotes: 0

Views: 1964

Answers (4)

Dr. Jan-Philip Gehrcke
Dr. Jan-Philip Gehrcke

Reputation: 35741

A defaultdict of type list will create an empty list in case you access a key that does not exist in the dictionary so far. This often leads to quite elegant code.

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d[1].append(3)
>>> d[1].append(2)
>>> d
defaultdict(<type 'list'>, {1: [3, 2]})

Upvotes: 2

CCKx
CCKx

Reputation: 1343

Like others pointed out, store the values in a list, but remember to check if the key is in the dictionary to determine whether you need to append or create a new list for that key...

A = dict()
if key in A: A[key].append(value)
else: A[key] = [value]

Upvotes: 0

user2555451
user2555451

Reputation:

You could make the dictionary values into lists:

>>> A = dict()
>>> A[1] = [3]
>>> A
{1: [3]}
>>> A[1].append(5)  # Add a new item to the list
>>> A
{1: [3, 5]}
>>>

You may also be interested in dict.setdefault, which has functionality similar to collections.defaultdict but without the need to import:

>>> A = dict()
>>> A.setdefault(1, []).append(3)
>>> A
{1: [3]}
>>> A.setdefault(1, []).append(5)
>>> A
{1: [3, 5]}
>>>

Upvotes: 5

Jason Nance
Jason Nance

Reputation: 93

Using a defaultdict eliminates the "special case" of the initial insert.

from collections import defaultdict

A = defaultdict(list)

for num in (3,5):
    A[1].append(num)

Upvotes: 1

Related Questions