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

时间:2018-08-22 15:59:48

标签: python

如果输出在单独的行列表中是相同的,我试图同时打印两个(或多个)输出 example->该班级的一些学生的姓名和年级经过汇编以建立以下列表:

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

最低等级属于Tina。哈利和贝里的成绩第二低。 倒数第二个,所以我们按字母顺序排列其名称,并将每个名称打印在新行上。

3 个答案:

答案 0 :(得分:1)

这个问题有两个方面:

  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])

答案 1 :(得分:0)

您可以迭代列表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

答案 2 :(得分:0)

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

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))