Kry*_*ten 2 python sorting sorted
Python初学者在这里.假设我的脚本末尾有一些东西,它从系统中查询信息并将其转储为这种格式:
print my_list_of_food(blah)
Run Code Online (Sandbox Code Playgroud)
并输出如下列表:
('Apples', 4, 4792320)
('Oranges', 2, 2777088)
('Pickles', 3, 4485120)
('Pumpkins', 1, 5074944)
('more stuff', 4545, 345345)
Run Code Online (Sandbox Code Playgroud)
然后,我如何根据第二个字段对输出进行排序,使其看起来像这样:
('Pumpkins', 1, 5074944)
('Oranges', 2, 2777088)
('Pickles', 3, 4485120)
('Apples', 4, 4792320)
Run Code Online (Sandbox Code Playgroud)
除了导入bash命令,cut -d "," -f 2 | head 4我宁愿使用python.我知道我可以使用sorted或sort来对现有的元组或字典进行排序,但我不确定如何对打印输出进行排序.我做了一些研究,一切都指向在我的脚本中实现排序而不是排序打印输出,但谁知道,也许有人有解决方案.谢谢.
更新:
感谢大家.我试图让所有解决方案都有效,但我一直收到这个错误:
File "test.py", line 18, in <lambda>
print sorted(my_list_of_food(blah), key=lambda x: x[1])
TypeError: 'int' object is unsubscriptable
File "test.py", line 18, in <lambda>
print(sorted(my_list_of_food(blah), key=lambda k: k[1]))
TypeError: 'int' object is unsubscriptable
Run Code Online (Sandbox Code Playgroud)
我试图在脚本的开头包含这个:
from __future__ import print_function
Run Code Online (Sandbox Code Playgroud)
但没有运气.
您可以使用键参数进行排序.在你的情况下,
print(sorted(list_of_food, key=lambda k:k[1]))
Run Code Online (Sandbox Code Playgroud)
会做的.键函数通常应该返回一个整数.