匹配2个列表

时间:2014-04-09 20:58:49

标签: python

我正在尝试将学生姓名与他们在考试中获得的分数相匹配。所以我有2个列表

year3studentslist = ['Dave','Tom','Alan']
year3scorelist = ['17','3','12']

我的课程中发生的事情是学生登录完成测试并获得分数。我如何将学生的姓名与分数相匹配?

3 个答案:

答案 0 :(得分:6)

使用zip()可能是最简单的方法。执行zip(year3studentslist, year3scorelist)会将元组列表返回为:

[('Dave', '17'), ('Tom', '3'), ('Alan', '12')]

所以只需遍历此列表即可访问元素:

for student, score in zip(year3studentslist, year3scorelist):
    print student, score

如果您想按学生姓名访问数据,可以将上述压缩数据转换为字典:

data_dict = {item[0]: item[1] for item in zip(year3studentslist, year3scorelist)}

相同
data_dict = dict(zip(year3studentslist, year3scorelist))

现在您可以将“Dave”的分数设为data_dict['Dave']。但请注意,在字典中,键必须是唯一的。在这种情况下,我们选择学生的名字作为关键,在课堂上有两个戴夫的情况下,这不是一个好主意。只有在确定名称是唯一的时才使用字典方法是个好主意

答案 1 :(得分:0)

使用python dicts。

使用字典是您想要做的更好的方法。

>>> Students = {}
>>> Student['Dave'] = 17  # Create the record for Dave
>>> Student['Tom'] = 3    # Create the record for Tom
>>> Student['Alan'] = 17  # Create the record for Alan
>>> Student['Dave'] = 15  # Update record for Dave


>>> print(Students['Dave'])
>>> 15

你想分别获得分数或学生的名字,你可以:

>>> Students.keys()
>>> ['Dave', 'Tom', 'Alan']
>>> Students.values()
>>> [15, 3, 17]

答案 2 :(得分:0)

您可以使用mapdict对象:

year3studentslist = ['Dave','Tom','Alan']
year3scorelist = ['17','3','12']
students = {}
for k in range(len(year3studentslist)):
    students[year3studentslist[k]] = year3scorelist[k]

print students
#{'Dave': '17', 'Alan': '12', 'Tom': '3'}