创建多个列表,放入另一个列表,然后排序

2024-10-01 15:44:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要能够:

  • 定义一个接受两个参数的函数。创建两个列表,一个 名字和等级。你知道吗
  • 将这两个列表中的数据与成绩一起放入第三个列表 对应于第一个列表中相同位置的名称。即: 具有相同的索引值。你知道吗
  • 然后,我需要能够按照 分数。你知道吗

到目前为止我只有这些:

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

我创建列表的方式是“确定”。我该从这里到哪里去整理清单呢?你知道吗


Tags: 列表定义jostrjajilst1lst2
3条回答

不,你创建列表的方式不太好,你想要的是创建一个包含名称和等级对的元素的列表,比如

[('mar', 95), ('Kim', 98) ...]

您可以手动创建此列表或使用内置的zip函数

list3 = list(zip(list1, list2))

然后,您可以通过向list上的sort方法提供键函数来对该列表进行排序

list3.sort(key=lambda pair: pair[1], reverse=True)

在这里,我根据等级通知进行排序,我返回pair[1],这是等级,reverse=True按降序排序。你知道吗

然后您可以简单地迭代list3并打印:

for name, grade in list3:
    print('{}/{}'.format(name, grade))
def function(names,grades):
    return_list = []
    for i in range(0,len(names)):
        return_list.append( {names[i]:grades[i] }
    return_list = sorted(return_list, reverse=True)

    for i in range(0,len(a)):
        for key in a[i]:
            print str(key)+ '/'+str(a[i][key][0])

“将这两个列表中的数据放入第三个列表”,这就是^{}所做的。你知道吗

步骤3在reverse参数到sorted()中:

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

相关问题 更多 >

    热门问题