给出一个清单:
lists = [[5, 8, 2, "Banana"][3, 6, 9, "Apple"][7, 9, 1, "Cherry"]]
1)如何按字母顺序打印列表并仅在列表中打印第二个数字?
期望的输出:
[6, "Apple"][8, "Banana"][9, "Cherry"]
2)按照从最高到最低的第3个数字打印排序列表
期望的输出:
[3, 6, 9, "Apple"] [5, 8, 2, "Banana"][7, 9, 1, "Cherry"]
答案 0 :(得分:0)
因为你只想要代码听起来像
from operator import itemgetter
sorted(map(itemgetter(1,-1),lists),key=itemgetter(-1))
下面是一些应该做你想做的代码...老师可能想要一个解释但是......只是公平警告
答案 1 :(得分:0)
这里是:每个子列表都应该有逗号
l = [[5, 8, 2, "Banana"],[3, 6, 9, "Apple"],[7, 9, 1, "Cherry"]]
[ x[1::2]for x in sorted(l,key=lambda x : x[2]) ]
输出:
[[9, 'Cherry'], [8, 'Banana'], [6, 'Apple']]
然后使用key=reverse
sorted([ x[1::2] for x in sorted(l,key=lambda x : x[2]) ],key=lambda x:x[-1])
输出:
[[6, 'Apple'], [8, 'Banana'], [9, 'Cherry']]
答案 2 :(得分:0)
>>> sorted([[i[1], i[-1]] for i in lists], key=lambda x:x[1])
[[6, 'Apple'], [8, 'Banana'], [9, 'Cherry']]