On 07/21/2010 03:38 PM, kak...@gmail.com wrote: > On Jul 21, 9:04 am, "kak...@gmail.com" <kak...@gmail.com> wrote: >> On Jul 21, 8:58 am, Stefan Behnel <stefan...@behnel.de> wrote: >> >> >> >>> kak...@gmail.com, 21.07.2010 14:36: >> >>>> From the subject of my message it's clear that i get an xml message >>>> from a socket, >> >>> Not at all, but now that you say it... >> >>>> i parse it and the result is a list like the one that >>>> follows: >>>> ID_Col >>>> 4 Server ak ip OFFLINE >> >>>> 29 Server and2 ip OFFLINE >> >>>> 5 Proxy l34e ip OFFLINE >> >>>> 6 Proxy barc ip ONLINE >> >>>> 41 Proxy proxy-2 ip ONLINE >> >>>> 53 Server server-4 ip ONLINE >> >>>> 52 Server server-3 ip ONLINE >> >>> Doesn't look like a Python list to me... >> >>>> What i want is to print this list sorted by ID_Col? >>>> Any Suggestions? >> >>> Assuming that the above is supposed to represent a list of tuples, you can >>> use the .sort() method on the list and pass operator.itemgetter(0) as 'key' >>> argument (see the sort() method and the operator module). >> >>> Stefan >> >> No it is not a Python list at all. This the way i print the parsed >> items 'like a list'. >> But i want them to be sorted. > > Well i did this: > > SortedServers = [] > > for session in sessions: > for IP in session.getElementsByTagName("ipAddress"): > for iphn in session.getElementsByTagName("hostName"): > tempTuple = session.getAttribute("id"), > session.getAttribute("type"), iphn.childNodes[0].data, > IP.childNodes[0].data, session.getAttribute("status")
Please try to persuade your mail client to not mess up python code, if you could. It would make this *so* much easier to read > > SortedServers.append(tempTuple) > > Sorted = sorted(SortedServers, key=lambda id: SortedServers[0]) Anyway, let's look at that key function of yours: key=lambda id: SortedServers[0] translated to traditional function syntax: def key(id): return SortedServers[0] No matter which item sorted() examines, the key it sorts by is always the same (the first item of the WHOLE LIST). You want something more like this: def key(row): return row[0] ergo, what you want, all in all, is either of these: Sorted = sorted(SortedServers, key=(lambda row: row[0])) # option 1 SortedServers.sort(key=(lambda row: row[0])) # option 2 option 2, the in-place sort, might be faster. (and, as Stefan noted, as you probably want a numeric sort, you'll want your key to be an int) > for item in Sorted: > print item > > but the list is still unsorted and with u' in front of each item > > (u'4', u'Server', u'aika74', u'ip', u'OFFLINE') > (u'29', u'Server', u'ando', u'ip2', u'OFFLINE') > > How do i remove the u' > > Antonis -- http://mail.python.org/mailman/listinfo/python-list