gradebooks_a = [[['Alice', 95], ['Troy', 92]],
[['Charles', 100], ['James', 89], ['Bryn', 59]],
[['Karren', 97], ['Nancy', 96], ['Astha', 92], ['Jack', 74]]]
如何按分數 > 90 對這個嵌套資料進行排序?謝謝你。
預期輸出如下:
[[['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
uj5u.com熱心網友回復:
sorted與key接收每個對串列的函式一起使用,(student, grade)并根據以下等級數進行排序> 90:
sorted(gradebooks_a, key=lambda grades_list: sum(grade > 90
for _, grade in grades_list))
我們在迭代 ( for _, grade) 時使用解包來獲得更易讀的代碼(通過將第二個元素命名為“等級”)而不是使用索引。我們可以使用更明確的for student, grade,但這會觸發一些不使用student變數的 linter。
uj5u.com熱心網友回復:
您可以使用自定義函式key:sorted
out = sorted(gradebooks_a, key=lambda lst: sum([e[1]>90 for e in lst]))
解釋:
對于每個子串列,識別第二個專案大于 90 的元素并使用sum.
輸出:
[[['Charles', 100], ['James', 89], ['Bryn', 59]],
[['Alice', 95], ['Troy', 92]],
[['Karren', 97], ['Nancy', 96], ['Astha', 92], ['Jack', 74]]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/462129.html
下一篇:c 選擇排序與單獨的最小索引函式
