[英]how to sort this Nested Data by the number of scores > 90?
gradebooks_a = [[['Alice', 95], ['Troy', 92]],
[['Charles', 100], ['James', 89], ['Bryn', 59]],
[['Karren', 97], ['Nancy', 96], ['Astha', 92], ['Jack', 74]]]
如何按> 90 的分數對嵌套數據進行排序? 謝謝你。
預期 output 是這樣的:
[[['Charles', 100], ['James', 89], ['Bryn', 59]], # only 1 score above 90
[['Alice', 95], ['Troy', 92]], # 2 scores above 90
[['Karren', 97], ['Nancy', 96], ['Astha', 92], ['Jack', 74]]] # 3 score above 90
您可以使用自定義 function 作為sorted
的key
:
out = sorted(gradebooks_a, key=lambda lst: sum([e[1]>90 for e in lst]))
解釋:
對於每個子列表,確定第二項大於 90 的元素並使用sum
對它們進行計數。
output:
[[['Charles', 100], ['James', 89], ['Bryn', 59]],
[['Alice', 95], ['Troy', 92]],
[['Karren', 97], ['Nancy', 96], ['Astha', 92], ['Jack', 74]]]
使用sorted
key
function 接收每個(student, grade)
對列表並根據> 90
的成績數排序:
sorted(gradebooks_a, key=lambda grades_list: sum(grade > 90
for _, grade in grades_list))
我們在迭代時使用解包 ( for _, grade
) 來獲得更具可讀性的代碼(通過給第二個元素命名為“grade”)而不是使用索引。 我們可以使用更明確for student, grade
但這會觸發一些不使用student
變量的 linter。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.