Can I replace this for loop with a join?

Paul Rubin http
Mon Jun 22 09:26:51 CEST 2009


WP <no.i.dont at want.mail.from.spammers.com> writes:
> I could do it like this:
> dict = {1:'astring', 2:'anotherstring'}
> for key in dict.keys():
>      print 'Press %i for %s' % (key, dict[key])
> Press 1 for astring
> Press 2 for anotherstring

Note that dict.keys() will return the keys in random order.

> but can I use a join instead?

  print '\n'.join('Press %s for %s' for (k,v) in sorted(dict.iteritems()))

(untested) should print them in order.  Yes it is ok to use %s to
format integers.

Note: normally you should not call your dictionary 'dict', since
'dict' is a built-in value and overriding it could confuse people
and/or code.



More information about the Python-list mailing list