2013-07-02 37 views
2

cur是遊標到數據庫。python:如何排序從sql查詢返回的列表?

cur.execute(select a,b from table) 
List = cur.fetchall() is like this 
[('a', Decimal('1420.3345345278832575')), ('b', Decimal('380.0000000000000000')),('c', Decimal('382.0000000000000000'))] 

我想在元組即十進制

我試圖在第二個項目的基礎上這一結果進行排序:

sorted(List,key=itemgetter(1)) 

這並沒有對列表進行排序。

有什麼建議嗎?

+0

能否請您闡述一下「這行不通」? – TerryA

+0

編輯了問題 – Peter

+4

爲什麼不只是將您的查詢更改爲'按b從表格順序中選擇a,b? –

回答

3

sorted不修改原始列表,它返回一個新的排序版本List。你應該從sorted返回列表分配給一個變量:

>>> lis = [('a', Decimal('1420.3345345278832575')), ('b', Decimal('380.0000000000000000')),('c', Decimal('382.0000000000000000'))] 
>>> new_lis = sorted(lis, key=itemgetter(1)) 
>>> new_lis 
[('b', Decimal('380.0000000000000000')), ('c', Decimal('382.0000000000000000')), ('a', Decimal('1420.3345345278832575'))] 

或排序原始列表使用list.sort

>>> lis = [('a', Decimal('1420.3345345278832575')), ('b', Decimal('380.0000000000000000')),('c', Decimal('382.0000000000000000'))] 
>>> lis.sort(key=itemgetter(1)) 
>>> lis 
[('b', Decimal('380.0000000000000000')), ('c', Decimal('382.0000000000000000')), ('a', Decimal('1420.3345345278832575'))] 
+0

@彼得很高興的幫助。 :)當系統允許時,請隨時[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 –