Is there a nicer way to do this?

Amaury Forgeot d'Arc afaNOSPAM at neuf.fr
Thu Oct 4 17:28:44 EDT 2007


Hello,
Stefan Arentz a écrit :
> Is there a better way to do the following?
> 
> attributes = ['foo', 'bar']
> 
> attributeNames = {}
> n = 1
> for attribute in attributes:
>    attributeNames["AttributeName.%d" % n] = attribute
>    n = n + 1
> 
> It works, but I am wondering if there is a more pythonic way to
> do this.
> 
>  S.

You could use enumerate() to number the items (careful it starts with 0):

   attributes = ['foo', 'bar']
   attributeNames = {}
   for n, attribute in enumerate(attributes):
       attributeNames["AttributeName.%d" % (n+1)] = attribute


Then use a generator expression to feed the dict:

   attributes = ['foo', 'bar']
   attributeNames = dict(("AttributeName.%d" % (n+1), attribute)
                         for n, attribute in enumerate(attributes))

Hope this helps,

-- 
Amaury



More information about the Python-list mailing list