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

如果输出在单独的行列表中是相同的,我将尝试打印两个(或多个)输出,例如->这堂课中有一些学生的姓名和年级被汇编成以下列表:

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

最低成绩属于Tina。哈利和贝里的成绩第二低。有两个最低的,所以我们按字母顺序排列他们的名字并将每个名字打印在一个新行上。


摇曳的蔷薇
浏览 238回答 3
3回答

慕桂英4014372

这个问题有两个方面:要按每个子列表值排序,请sorted与自定义函数一起使用。要在单独的行上打印,可以使用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.2Berry 37.21Harry 37.21Harsh 39Akriti 41如果您希望得分按从高到低的顺序排列,并且让平局者按字母顺序排列名称,则可以使用sorted(students, key=lambda x: (-x[1], x[0])。

慕的地10843

您可以使用下面的代码片段以预期的格式生成输出。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))

蝴蝶不菲

您可以迭代列表列表,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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python