python:如何对从sql查询返回的列表进行排序?

时间:2013-07-02 09:33:08

标签: python

cur是光标到数据库。

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))

这没有对名单进行排序。

有什么建议吗?

1 个答案:

答案 0 :(得分: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'))]