我有一個像這樣的字典串列:
students=
[
{rollno:1,firstname:f1,last_name:l1,total_marks:0},
{rollno:2,firstname:f2,last_name:l2,total_marks:0},
{rollno:3,firstname:f3,last_name:l3,total_marks:0}
]
然后我以以下形式在回圈中輸入
rollno:1 english_marks:10
rollno:2 english_marks:20
rollno:5 social_marks: 30
rollno:6 maths_marks:40
rollno:1 science_marks:30
rollno:2 science_marks:40
現在我想添加與正確卷號total_marks變數相關的所有主題標記。我怎樣才能做到這一點?
for marks in marks_list:
students[rollno] = ...? # need help here : how can I access total_marks variable of that rollno?
uj5u.com熱心網友回復:
因為 student 是一個串列,沒有鍵,所以不能用 int 以外的任何東西對其進行索引,如果您嘗試將 therollno用作鍵,這對您沒有幫助。假設您想使用您顯示的資料結構(而不??是創建新的資料結構),您必須遍歷學生串列以找到rollno您想要的那個。
for marks in marks_list:
for student in students:
if student[rollno] == marks[rollno]:
# you found the student whose rollno matches that of the mark, so do your stuff here
還有其他方法可以使用速記、查找等來完成此操作,但既然您說您是 Python 新手,我認為最好查看原始回圈的作業情況。
請注意,您不應在回圈遍歷任何集合時修改它。因此,如果要保存資料的任何更改,請務必創建副本或新串列。
uj5u.com熱心網友回復:
您可能正在尋找與此類似的東西,假設您的students物件和元組串列(即(1, "maths_mark", 90))名稱marks_list:
# Set up your basic data structure
student_roll = {r.get("rollno"): {
"firstname": r.get("firstname", "unknown"),
"lastname": r.get("lastname", "unknown"),
"total_marks": 0,
"marks": {}
} for r in students}
# Convert your values into that structure
for (roll_no, mark, score) in marks_list:
roll = students_roll.get(roll_no)
marks = roll.get("marks", {})
score_list = marks.get(mark, [])
score_list.append(score)
marks[mark] = score_list
# do the appropriate math to update r[total_marks] = ...
student_roll[roll_no] = roll
這將產生一個看起來像這樣的字典:
{
1: {
"firstname": "Joe",
"lastname": "DeFalt",
"total_marks": 20,
"marks": {
"english_marks": [10, 20],
"math_marks": [30]
},
2: {
"firstname": "Jessica",
"lastname": "Bambino",
"total_marks": 90,
"marks": {
"social_marks": [100, 70],
"math_marks": [100]
},
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311467.html
下一篇:將csv單元格轉換為嵌套串列
