【发布时间】:2013-12-31 03:36:58
【问题描述】:
我有以下问题。 我创建了以下列表:
usinlist = [['strawberries', 2.05, 'rosales'],
['pineapples', 2.05, 'poales'],
['bananas', 2.05, 'zingiberales'],
['oranges', 2.05, 'sapindales'],
['apples', 2.05, 'rosales'],
['broccoli', 2.05, 'rosales'],
['cauliflower', 2.05, 'rosales'],
['cucumber', 2.05, 'cucurbitales'],
['lettuce', 2.05, 'asterales'],
['sprouts', 2.05, 'rosales']]
我需要打印此列表并使用 3 元素 usinlist[x][x][2] 按字母顺序对其进行排序。 我现在要排序的代码如下:
print('\n'.join('{}: {}'.format(*k) for k in sorted(usinlist, key=lambda k: (k[2], k[0], k[1]))))
按字母顺序对种类/类型[2]进行排序后,它会按字母顺序对水果/蔬菜名称进行排序,但出现的问题是它确实排序了,但没有打印完整的列表。
输出如下:
lettuce: 2.05
cucumber: 2.05
pineapples: 2.05
apples: 2.05
broccoli: 2.05
cauliflower: 2.05
sprouts: 2.05
strawberries: 2.05
oranges: 2.05
bananas: 2.05
谁能告诉我这里出了什么问题:)?
【问题讨论】:
-
您可以使用
key=itemgetter(2, 0, 1)代替 lambda。itemgetter在operator模块中
标签: python list sorting printing