尝试迭代列表列表并删除每个子列表中的最低值。当我使用min()BIF时,它会产生一个TypeError,因为我正在比较字符串和整数值。如何避免这种比较并在子列表中找到最小值?
studentList = [['A', 2, 5, 7], ['B', 6, 2, 9], ['C', 5, 3, 9]]
for student in studentList:
student.remove(min(student))
print(studentList)
答案 0 :(得分:0)
让我们说学生名字缩写为'A',然后是 整数是标记,我想删除最低标记(整数)
在您的情况下,您应该跳过每个子列表中的第一项,然后 - 从剩余序列中获取最小值:
studentList = [['A', 2, 5, 7], ['B', 6, 2, 9], ['C', 5, 3, 9]]
for student in studentList:
student.remove(min(student[1:]))
print(studentList)
输出:
[['A', 5, 7], ['B', 6, 9], ['C', 5, 9]]
答案 1 :(得分:0)
如果子列表中的第一个值代表一个标签,那么将数据存储为dict
会更有意义,这样您在处理时无需进行额外的处理来忽略标签数字:
studentList = [['A', 2, 5, 7], ['B', 6, 2, 9], ['C', 5, 3, 9]]
#use the first value in the list as the 'key' and use the rest of the values as the 'value'
studentMarks = {student[0]:student[1:] for student in studentList}
for marks in studentMarks.values():
marks.remove(min(marks))
>>> studentMarks
{'B': [6, 9], 'C': [5, 9], 'A': [5, 7]}
此数据结构可能更有用,因为现在studentMarks['A']
将为您提供学生A
的标记,studentMarks.keys()
将为您提供所有学生姓名和studentMarks.values()
的列表所有标记列表的列表。