2017-01-13 2 views
0

У меня есть проблемы с моим кодом, когда я сортирую мой-структуру в алфавитном порядке в зависимости от некоторого столбцаВ алфавитном порядке сортировать массив в структуре?

К примеру у меня есть:

name: Bela message: abc priority: 1 
name: Carla message: efg priority: 0 
name: Ana message: xyz priority: 0 

И выход должен быть таким:

name: Ana message: xyz priority: 0 
name: Bela message: abc priority: 1 
name: Carla message: efg priority: 0 

Мой код выглядит так:

class structura: 
    prioritate = 0 
    destinatar = "" 
    continut = "" 
n = input("mesaje maxime: "); 
cutie = [structura() for i in range(n)] 

for i in range(n): 
    print "\nAdaugare mesaj %d" %(i + 1) 
    cutie[i].prioritate= input("Prioritate mesaj :") 
    cutie[i].destinatar = raw_input("Destinatar mesaj: ") 
    cutie[i].continut = raw_input("Continut mesaj: ") 

i=0 
    while i<n-1: 
     if cutie[i].prioritate==0: 
      if cutie[i].destinatar>cutie[i+1].destinatar: 
       cutie[i].destinatar,cutie[i+1].destinatar=cutie[i+1].destinatar,cutie[i].destinatar 
       cutie[i].continut,cutie[i+1].continut=cutie[i+1].continut,cutie[i].continut 
       i=0 
       print i 
      else: 
       i+=1 
     else: 
      i+=1 

for i in range(n): 
    print "cutie: prioritate= %d | destinatar= %s | continut= %s" %(cutie[i].prioritate, cutie[i].destinatar, cutie[i].continut) 

Но с этим сортировочным кодом это не работает (это свой родом просто cutie.destinatar только вместо cutie.destintar и cutie.continut):

i=0 
    while i<n-1: 
     if cutie[i].prioritate==0: 
      if cutie[i].destinatar>cutie[i+1].destinatar: 
       cutie[i].destinatar,cutie[i+1].destinatar=cutie[i+1].destinatar,cutie[i].destinatar 
       cutie[i].continut,cutie[i+1].continut=cutie[i+1].continut,cutie[i].continut 
       i=0 
       print i 
      else: 
       i+=1 
     else: 
      i+=1 

Я попытался с отсортированной функцией тоже, но это не делает работайте с моей структурой. Есть ли решение?

ответ

1

Вы хотите отсортировать объекты по атрибуту. sorted принимает параметр key, значение которого соответствует сортировке.

my_sorted_list = sorted(cutie, key = lambda x: x.destinatar) 
+0

я судимый но это doens't рода с моей структурой классом – Gradin98

+0

'sorted' не сортирует список на месте, он returs нового. отредактировал ответ –

+0

Да, теперь это работа, спасибо за помощь, однажды в документации для такого простого решения – Gradin98

Смежные вопросы