亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何計算字典中特定元組整數的平均值?

如何計算字典中特定元組整數的平均值?

MMMHUHU 2022-06-22 20:41:46
我有一本形式為:students = {student_1: {'Assignments': [('Assignment_1', 3),                                        ('Assignment_2', 4),                                        ('Assignment_3', 2),                                        ('Assignment_4', 4)],                        'first_name': 'Alex',                        'id': 1009,                        'last_name': 'Robertson'},            student_2: {'Assignments': [('Assignment_1', 2),                                        ('Assignment_2', 1),                                        ('Assignment_3', 2),                                        ('Assignment_4', 4)],                        'first_name': 'Dave',                        'id': 2009,                        'last_name': 'Robertson'},            student_3: {'Assignments': [('Assignment_1', 4),                                        ('Assignment_2', 4),                                        ('Assignment_3', 4),                                        ('Assignment_4', 0)],                        'first_name': 'Carter',                         'id': 3109,                         'last_name': 'Smith'}}我需要創建一個函數來獲取所有"Assignments". 例如,in("Assignment_1", 4)是4作業分數。如何僅選擇這些值進行計算?
查看完整描述

2 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

您可以students使用稱為列表理解的方法獲取字典中每個學生的分數列表。從中計算平均值應該相當容易。


for student in students.values():

    scores = [score for (assignment, score) in student['Assignments']]

    average = ...


查看完整回答
反對 回復 2022-06-22
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

這是在 Python 3 中解決它的一種方法。使用functools.reduce:


from functools import reduce


# Assuming you have a dictionary students

students = {'student_1': {'Assignments': [('Assignment_1', 3),

                             ('Assignment_2', 4),

                             ('Assignment_3', 2),

                             ('Assignment_4', 4)],

                          'first_name': 'Alex',

                          'id': 1009,

                          'last_name': 'Robertson'},

            'student_2': {'Assignments': [('Assignment_1', 2),

                             ('Assignment_2', 1),

                             ('Assignment_3', 2),

                             ('Assignment_4', 4)],

                          'first_name': 'Dave',

                          'id': 2009,

                          'last_name': 'Robertson'}}


# Iterate over dictionary's values

for v in students.values():

    # lambda to calculate average - just a helper

    l = lambda lst: reduce(lambda a, b: a + b, lst) / len(lst)


    # Comprehend the values from tuples in dictionary

    # - you know the values are at index 1 of the tuple

    values = [i[1] for i in v[list(v.keys())[0]]]


    # Calculate the average for extracted values

    average = l(values)


    # Round to second digit

    r = round(average, 2)

    # Output the result

    print("Average {}".format(r))

您可以進一步修改它以更符合您的需求。


查看完整回答
反對 回復 2022-06-22
  • 2 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號