From: kaklis on
Hi pythonistas,
From the subject of my message it's clear that i get an xml message
from a socket, 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


What i want is to print this list sorted by ID_Col?
Any Suggestions?

Antonis K.
From: Stefan Behnel on
kaklis(a)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

From: kaklis on
On Jul 21, 8:58 am, Stefan Behnel <stefan...(a)behnel.de> wrote:
> kak...(a)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.
From: kaklis on
On Jul 21, 9:04 am, "kak...(a)gmail.com" <kak...(a)gmail.com> wrote:
> On Jul 21, 8:58 am, Stefan Behnel <stefan...(a)behnel.de> wrote:
>
>
>
> > kak...(a)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")

SortedServers.append(tempTuple)

Sorted = sorted(SortedServers, key=lambda id: SortedServers[0])
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
From: Stefan Behnel on
kaklis(a)gmail.com, 21.07.2010 15:38:
> On Jul 21, 9:04 am, "kak...(a)gmail.com"<kak...(a)gmail.com> wrote:
>> On Jul 21, 8:58 am, Stefan Behnel<stefan...(a)behnel.de> wrote:
>>
>>
>>
>>> kak...(a)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")
>
> SortedServers.append(tempTuple)
>
> Sorted = sorted(SortedServers, key=lambda id: SortedServers[0])
> 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')

It seems you want to sort the list numerically. In that case, use
int(SortedServers[0]) as the key. Sorting by string values will sort the
list lexicographically.


> How do i remove the u'

You should read the Python tutorial, specifically the sections about
strings. Then, read the sections on lists and sequences.

In short: Don't care about the "u'" prefix, that's just fine.

Stefan