为了账号安全,请及时绑定邮箱和手机立即绑定

在python中为特定条件打印多个输出

在python中为特定条件打印多个输出

摇曳的蔷薇 2021-05-30 00:34:16
如果输出在单独的行列表中是相同的,我将尝试打印两个(或多个)输出,例如->这堂课中有一些学生的姓名和年级被汇编成以下列表:python students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]]最低成绩属于Tina。哈利和贝里的成绩第二低。有两个最低的,所以我们按字母顺序排列他们的名字并将每个名字打印在一个新行上。
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

这个问题有两个方面:

  1. 要按每个子列表值排序,请sorted与自定义函数一起使用。

  2. 要在单独的行上打印,可以使用for循环。

这是一个例子:

students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2],

            ['Akriti', 41], ['Harsh', 39]]


for name, val in sorted(students, key=lambda x: (x[1], x[0])):

    print(name, val)


Tina 37.2

Berry 37.21

Harry 37.21

Harsh 39

Akriti 41

如果您希望得分按从高到低的顺序排列,并且让平局者按字母顺序排列名称,则可以使用sorted(students, key=lambda x: (-x[1], x[0])。


查看完整回答
反对 回复 2021-06-01
?
慕的地10843

TA贡献1785条经验 获得超8个赞

您可以使用下面的代码片段以预期的格式生成输出。


import operator

    students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]]

    students_sorted = sorted(students, key=operator.itemgetter(1,0))

    print('\n'.join(' '.join(map(str,sl)) for sl in students_sorted))


查看完整回答
反对 回复 2021-06-01
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您可以迭代列表列表,students然后组合一个字典来打印值。


print_dict = {}

for name, score in students:

    if score in print_dict:

        print_dict[score] += [name]

    else:

        print_dict[score] = [name]

一旦有了要打印的值字典,就可以通过迭代和排序进行打印:


for score, names in print_dict.items():

    print score, ', '.join(sorted(names))


Out:

    41 Akriti

    37.2 Tina

    37.21 Berry,Harry

    39 Harsh


查看完整回答
反对 回复 2021-06-01
  • 3 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号