如何对 Python 中生成的 sql 元组数组进行排序

How can I sort an array of sql produced tuples in Python

我想根据特定属性对包含来自 sql 查询的元组的数组进行排序。我有一个 table 这样的:

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

并且我想根据他们的 num 属性打印出名称,也就是我希望输出为:

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 的新手,我只是想弄乱一些事情所以如果有任何明显的问题请告诉我

我是运行python=2.7.10

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

您的问题是 sorted() return 是列表的新排序副本。如果您想对离子位置进行排序,请使用 data.sort(key=getKey)(如果 data 是一个列表)。您需要将 sorted() 的 return 值保存到某些内容才能正确使用它:

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