Python beginner here. Let’s say that I have something at the end of my script that queries info from a system and dumps it into this format:
print my_list_of_food(blah)
and it outputs a list like:
('Apples', 4, 4792320)
('Oranges', 2, 2777088)
('Pickles', 3, 4485120)
('Pumpkins', 1, 5074944)
('more stuff', 4545, 345345)
How do I then sort that output based on the 2nd field so that it would look like this:
('Pumpkins', 1, 5074944)
('Oranges', 2, 2777088)
('Pickles', 3, 4485120)
('Apples', 4, 4792320)
Other than importing a bash command to cut -d "," -f 2 | head 4 I’d rather use python. I know I can use sorted or sort to sort an existing tuple or dictionary but I’m not sure of how to sort the output of a print. I’ve done some research and everything points to implementing sort into my script instead of sorting a print output but who knows, maybe someone has a solution. Thanks.
UPDATE:
Thanks everyone. I’ve tried to make all of the solutions work but I keep getting this error:
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
I tried to include this at the beginning of the script:
from __future__ import print_function
but no luck.
You can use the key argument to the sort. In your case,
will do the trick. The key function should return an integer, usually.