From: Yuce Tekol (yucetekol@gmail.com)
Date: Mon 03 Apr 2006 - 19:44:00 GMT
Merhaba,
Oncelikle Foo'yu asagidaki gibi tanimlarsak, sanirim daha dogru olacak:
class Foo:
def __init__(self, _id, isim):
self.id = _id
self.isim = isim
(Tabii ki her Foo'nun farkli id'si ve isim'i olabilmesini istiyorsaniz)
Simdi Foo'lardan olusan bir liste tanimlayalim:
liste = [Foo(10,'abc'), Foo(5,'def'), Foo(2,'acb')]
Nesnelerin istedigimiz alanina gore siralama yapmak icin, liste'nin
sort() yontemini ve cmp parametresini, bir lambda fonksiyonu ile
kullanabiliriz. Mesela listeyi 'id' alanina gore siralayalim:
liste.sort(cmp=lambda a, b: cmp(a.id, b.id))
isim alanina gore siralamak icin:
liste.sort(cmp=lambda a, b: cmp(a.isim, b.isim))
list.sort() siralamayi yaparken listeyi degistirir; eger listenin
degismemesini, yeni sirali yeni bir listenin olusmasini istiyorsaniz,
sorted fonksiyonunu kullanabilirsiniz (Python 2.4 ve sonrasi icin):
yeni_liste = sorted(liste, cmp=lambda a, b: cmp(a.isim, b.isim))
On 3/31/06, Aykut KOÇAK <aykutkocak@superonline.com> wrote:
> Merhaba,
>
> Python'da elimde bulunan bir class dizisini python'un sort komutunu
> kullanarak farklı özelliklerine göre farklı sıralamak istiyorum. Bu iş
> için bir yöntem önerebilir misiniz?
>
> örnek:
>
> class foo:
> id=1
> isim='isim1'
> __cmp__(self):
> ???
>
>
> id 'ye göre veya isme göre sıralama yapmak istiyorum
>
> --
> Aykut KOÇAK
>
> Elektronik Mühendisi
> (/Electronics Engineer/)
>
> E-Posta
> (/E-Mail/ )
>
> aykutkocak@superonline.com
>
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama