chore: separate function
This commit is contained in:
+21
-8
@@ -22,15 +22,30 @@ def sort_by_rule(data, sort_by, limit):
|
||||
return sorted_data
|
||||
|
||||
|
||||
def sort_limit(data, limit):
|
||||
"""
|
||||
排序和限制
|
||||
[::reverse][:end]
|
||||
"""
|
||||
if limit is None:
|
||||
end = len(data)
|
||||
reverse = 1
|
||||
else:
|
||||
end = abs(limit)
|
||||
reverse = 1 if limit > 0 else -1
|
||||
|
||||
return data[::reverse][:end]
|
||||
|
||||
|
||||
def sort_by_time(data, limit=30):
|
||||
"""
|
||||
按时间排序
|
||||
"""
|
||||
sorted_data = sorted(data, key=lambda x: x["time"], reverse=True)
|
||||
return sorted_data[:limit] if limit > 0 else sorted_data[::-1][: abs(limit)]
|
||||
return sort_limit(sorted_data, limit)
|
||||
|
||||
|
||||
def sort_by_id(data, limit=True):
|
||||
def sort_by_id(data, limit=None):
|
||||
"""
|
||||
按学号排序,取对应的最高分,若分数相同则取最短运行时间
|
||||
"""
|
||||
@@ -46,11 +61,7 @@ def sort_by_id(data, limit=True):
|
||||
unique_students.append(score)
|
||||
unique_students_id_name.add(f"{score['name']}@{score["id"]}")
|
||||
|
||||
return unique_students[
|
||||
: len(unique_students) if limit == True else abs(limit) : (
|
||||
1 if limit > 0 else -1
|
||||
)
|
||||
]
|
||||
return sort_limit(unique_students, limit)
|
||||
|
||||
|
||||
def sort_by_score(data, limit=10):
|
||||
@@ -67,4 +78,6 @@ def sort_by_score(data, limit=10):
|
||||
if student_id not in best_scores_by_id:
|
||||
best_scores_by_id[student_id] = score
|
||||
|
||||
return list(best_scores_by_id.values())[:: 1 if limit > 0 else -1][: abs(limit)]
|
||||
scores = list(best_scores_by_id.values())
|
||||
|
||||
return sort_limit(scores, limit)
|
||||
|
||||
Reference in New Issue
Block a user