我需要能够:
这是我到目前为止所拥有的:
def gradeAvg(lst1,lst2):
lst1 = ["Jo", "Ji", "Ja"]
lst2 = [[90],[80],[70]]
jo = lst1[0]
ji = lst1[1]
ja = lst1[2]
jogr = str(lst2[0])
jigr = str(lst2[1])
jagr = str(lst2[2])
lst3 = [[jo + jogr],[ji+jigr],[ja+jagr]]
print(lst3)
这给了我这个输出:
[['Jo[90]'], ['Ji[80]'], ['Ja[70]']]
但是,我需要我的输出与此类似:
Kim/98
Lib/96
Mar/95
Nat/92
Ophelia/90
Princ/89
Rhea/87
这是我创建列表的方式“确定”。我从哪里可以对列表进行排序?
答案 0 :(得分:1)
不,您创建列表的方式不好,您想要的实际上是创建一个包含名称和等级对的元素的列表,例如
zip
您可以手动创建此列表,也可以使用内置的list3 = list(zip(list1, list2))
功能
list3.sort(key=lambda pair: pair[1], reverse=True)
然后您可以通过为列表中的sort方法提供键功能来对该列表进行排序
pair[1]
在这里,我根据成绩通知单进行排序,返回的是reverse=True
,即成绩,list3
则按降序排序。
然后,您可以简单地遍历for name, grade in list3:
print('{}/{}'.format(name, grade))
并打印:
{{1}}
答案 1 :(得分:0)
string [] -> float[]
答案 2 :(得分:0)
“将这两个列表中的数据放入第三个列表中”,这就是zip
的作用。
第3步位于sorted()的reverse
参数中:
def gradeAvg(lst1,lst2):
for a, b in sorted(zip(lst1, lst2), key=lambda x: x[1], reverse=True):
print("{}/{}".format(a, b))
l1 = ['Kim', 'Lib', 'Mar', 'Nat', 'Ophelia', 'Princ' ,'Rhea']
l2 = [98, 96, 95, 92, 90, 89, 87]
gradeAvg(l1, l2)
输出:
Kim/98
Lib/96
Mar/95
Nat/92
Ophelia/90
Princ/89
Rhea/87