Simple Dictionary Problem
mackstann
mack at incise.org
Sun Aug 24 23:18:26 EDT 2003
On Sun, Aug 24, 2003 at 08:06:56PM -0700, Kris Caselden wrote:
> I'm still new to some of Python's finer details, so this problem is
> probably an easy fix. I can't seem to loop through a dictionary whose
> values are tuples.
>
> For instance:
>
> oldlist = {'name':(1,2,3)}
> newlist = []
> for x1,x2 in oldlist:
> for y1 in x2:
> newlist.append(str(x1)+str(y1))
> print newlist
>
> Gives me:
>
> line 3, in ?
> for x1,x2 in oldlist:
> ValueError: too many values to unpack
>
> The docs I've read mention problems where the key is immutable, but
> don't say anything about what data-types are acceptable for the value.
> What am I missing?
When you iterate through a dictionary, you get the keys. e.g.:
>>> for x,y in {"hi":4}:
... print x, y
...
h i
>>> for x in {"hi":4}:
... print x
...
hi
So I think what you want to do is:
>>> oldlist = {'name':(1,2,3)}
>>> newlist = []
>>> for x1,x2 in oldlist.items(): # note .items()
... for y1 in x2:
... newlist.append(str(x1)+str(y1))
...
>>> print newlist
['name1', 'name2', 'name3']
Take a look at dict.keys(), dict.values(), and dict.items() (and the
iter- variations: iterkeys, itervalues, iteritems) for varying ways to
loop through a dict.
--
m a c k s t a n n mack @ incise.org http://incise.org
Real Programs don't use shared text. Otherwise, how can they use
functions for scratch space after they are finished calling them?
More information about the Python-list
mailing list