2016-08-12 13 views
0

コードの並べ替えに問題があります。Pythonリストを並べ替える

def generateList(attendeeList, criteria, workshoptitle): 
    for i in attendeeList: 
     if(criteria == 'Workshop1'): 
     criteria = 'Workshop B' 
     if(i['session1'] == criteria): 
      temp = [] 
      temp.append((i['lastname'])) 
      temp.sort() 
      print(temp) 

は出力が

['Smith'] 
['Robertson'] 
['Lovelace'] 
['Yu'] 

答えて

3

ループを通るたびに、あなたはそれで一つの項目でリストを印刷している姓でソート出てきません。

def generateList(attendeeList, criteria, workshoptitle): 
    lastnames = [] 
    for i in attendeeList: 
     if(criteria == 'Workshop1'): 
      criteria = 'Workshop B' 
     if(i['session1'] == criteria): 
      lastnames.append(i['lastname']) 
    lastnames.sort() 
    print(lastnames) 

EDIT

より慣用のPython、および代わりにそれを印刷するのリストを返す:

def generate_list(attendee_list, criteria, workshop_title): 
    if criteria == 'Workshop1': 
     criteria = 'Workshop B' 
    return sorted(attendee['lastname'] for attendee in attendee_list 
        if attendee['session1'] == criteria) 
+0

私の体温がループの内側にあるためですだから毎回変数を作り直して1つ入れて繰り返していたのですか? – MuthaCluffer

+0

@MuthaClufferはい正確に – Anonymous

+0

@MuthaClufferうん、新しい空リストを毎回「temp」に割り当てていた。 – Tagc

0

あなたのコード

temp = [] # empty list 
temp.append((i['lastname'])) # list with one element 
temp.sort() # list is already sorted (since it just has one element) 
print(temp) 

はたぶん、あなたはこのような何かをしたかったですあなたがしようとしていることはしません。アイテムを取得するたびにアイテムを印刷しても、各繰り返しで空のリストが生成されます。

あなたはさらにそれを印刷したい場合は、それを反復処理、その後、それを並べ替え、それに追加し、関数本体では、ループの前にリストを作成したい

def generateList(attendeeList, criteria, workshoptitle): 
    temp = [] 

    if criteria == 'Workshop1': 
     criteria = 'Workshop B' 

    for i in attendeeList: 
     if i['session1'] == criteria : 
      temp.append(i['lastname']) 

    temp.sort() 

    for item in temp: 
     print(item) 

    return temp 

例で実行IPython:

In [7]: generateList([dict(session1="Workshop B",lastname="test1"), dict(session1="Workshop A", lastname="test2"), dict(session1="Workshop B", lastname="test3")], "Workshop1", ...) 

test1 
test3 

Out[7]: ['test1', 'test3'] 
関連する問題