如果输出在单独的行列表中是相同的,我试图同时打印两个(或多个)输出 example->该班级的一些学生的姓名和年级经过汇编以建立以下列表:
python students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]]
最低等级属于Tina。哈利和贝里的成绩第二低。 倒数第二个,所以我们按字母顺序排列其名称,并将每个名称打印在新行上。
答案 0 :(得分:1)
这个问题有两个方面:
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.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))