On Mar 5, 9:01 am, Tino Wildenhain <t...@wildenhain.de> wrote: > Piet van Oostrum wrote: > >>>>>> Andre Engels <andreeng...@gmail.com> (AE) wrote: > > >> AE> On Wed, Mar 4, 2009 at 11:02 AM, lone_eagle <icym...@gmail.com> wrote: > >>>> Can someone suggest a easy method to do the inverse of dict(zip(x,y)) > >>>> to get two lists x and y? > > >>>> So, if x and y are two lists, it is easier to make a dictionary using > >>>> d = dict(zip(x,y)), but if I have d of the form, d = {x1:y1, > >>>> x2:y2, ...}, what is there any trick to get lists x = [x1, x2, ...] > >>>> and y = [y1, y2, ...] > > >> AE> x = d.keys() > >> AE> y = [d[e] for d in x] > > >> AE> y = d.values() might also work, but I am not sure whether d.keys() and > >> AE> d.values() are guaranteed to use the same order. > > > Yes, they are if the dictionary is not changed in the meantime (not even > > inserting and removing the same thing). See the library documentation, > > section dict. > > Still I'd like to see an application where this really matters (that > keys() and values() match in order)
Just as an example, if you are using a third-party library function that demands side-by-side inputs in respective lists, you could make use of it. That's not a good interface, IMHO, but if you have to use such a library, and you want to supply key-value pairs, then you can use keys and values seperately. populate_database(d.keys(),d.values()) Carl Banks -- http://mail.python.org/mailman/listinfo/python-list