我如何排序在Python中的SQL产生的元组的数组

问题描述:

我想基于特定的属性对sql查询中包含元组的数组进行排序。我有一个表是这样的:我如何排序在Python中的SQL产生的元组的数组

+-----+------------+-----------+ 
| lid | name  | num  | 
+-----+------------+-----------+ 
| 2 | Ruby's  |   0 | 
| 3 | Five Guy's |   1 | 
| 4 | Habana's |   0 | 
+-----+------------+-----------+ 

,我想根据自己的NUM属性打印出来的名字AKA我所要的输出是:

Five Guy's 
Ruby's 
Habana's 

我试图完成与此:

... 
data = cursor.fetchall() 
... 
def getKey(name): 
    return name['num'] 
sorted(data, key=getKey) 
for row in data: 
    print row['name'] 

但这输出的顺序数据:

Ruby's 
Five Guy's 
Habana's 

我很到新的Python,我只是想惹圆了一些东西,所以请让我知道,如果有任何明显的问题

我正在蟒蛇= 2.7.10

+2

排序返回数据的副本。所以你需要使用data.sort(key = getKey)或data = sorted(data,key = getKey) –

+0

@GarrettR我总是在询问python问题时这么做......谢谢! –

+0

你可以使用'operator.attrgetter'去掉额外的函数 –

for row in sorted(data, key=getKey): 
    print row['name'] 

您的问题是sorted()返回列表的新分类副本。如果要排序离子场所使用data.sort(key=getKey)(如果data是一个列表)。您需要的sorted()返回值保存到的东西正确地使用它:

... 
data = cursor.fetchall() 
... 
def getKey(name): 
    return name['num'] 
sorted_data = sorted(data, key=getKey) 
for row in sorted_data: 
    print row['name']