How to update dictionary from a tuple (or list of 2)

Question:

I thought it would be possible to update an existing dictionary as follows:

nameValuePair = 'myKey=myValue'
d.update(nameValuePair.split('='))

However I get this error:

Traceback (most recent call last):
  File "<pyshell#98>", line 1, in <module>
    d2.update(item.split('='))
ValueError: dictionary update sequence element #0 has length 1; 2 is required

I looked at some other StackOverflow questions/answers on this topic, which made me think this was possible. I must be missing something basic…

Asked By: Sam Goldberg

||

Answers:

The error message already gives you a hint: Each item in the sequence you pass must have a length of 2, meaning it has to consist of a key and a value.

Therefore you have to pass a tuple (list, sequence,…) of 2-tuples (-lists, -sequences,…):

// the value passed will be ((myKey, myValue), )
d.update((nameValuePair.split('='), ))
//       ^                        ^ ^
// creates a tuple of 1 element

Alternatively you could do:

key, value = nameValuePair.split('=')
d[key] = value
Answered By: Felix Kling
tp = ('k', 'val')
d.__setitem__(*tp)
Answered By: iyume
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.