Python:打印不完整

时间:2013-12-12 16:07:27

标签: python list sorting printing

我有以下问题。 我创建了以下列表:

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

谁能告诉我这里有什么问题:)?

2 个答案:

答案 0 :(得分:5)

您的格式字符串中只有两个占位符。尝试使用

print('\n'.join('{}: {} ({})'.format(*k) for k in sorted(usinlist, key=lambda k: (k[2], k[0], k[1]))))

或您需要的任何格式。

答案 1 :(得分:1)

这个?:

print('\n'.join('{}: {}: {}'.format(*k) for k in sorted(usinlist, key=lambda k: (k[2], k[0], k[1]))))