2

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

这没有对列表进行排序。

有什么建议么 ?

4

1 回答 1

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'))]
于 2013-07-02T09:35:10.250 回答