【问题标题】:Python: print incompletePython:打印不完整
【发布时间】: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。 itemgetteroperator 模块中

标签: python list sorting printing


【解决方案1】:

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

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

或您需要的任何格式。

【讨论】:

  • 乐于助人,滚动。
【解决方案2】:

还有这个?:

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

【讨论】:

    猜你喜欢
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    相关资源
    最近更新 更多