簡體   English   中英

字典值列表特定值的平均值python

[英]average of specific values of list of dictionary values python

嘿,我正在嘗試從列表中獲取值的平均值,列表中包含來自字典的值,我一直在返回此錯誤

all_students_avg = sum(numbers_lists) / len(numbers_lists)

類型錯誤:不支持 + 的操作數類型:'int' 和 'list'

我不明白,我調用的值已經是整數,我已經嘗試將它們轉換為整數和浮點數。

Bob = {'name': 'bob', 'assignments': 80.0, 'presentation': 80.0, 'lab tasks': 60.0}
Geoff = {'name': 'Geoff', 'assignments': 90.0, 'presentation': 90.0, 'lab tasks': 90.0}
numbers_lists = [Bob['assignments'], Bob['presentation'], Bob['lab tasks']], [Geoff['assignments'], "\n",
                                                                          Geoff['presentation'],
                                                                          Geoff['lab tasks']]
all_students_avg = sum(numbers_lists) / len(numbers_lists)
print("This is all the students average score across all subjects: ", all_students_avg, )

Python 列表的格式如下: l = [element1, element2, element3] 您的列表看起來像: numbers_lists = [[element1, element2], "\\n", [elem1, elem2]]因為您的列表不僅包含兩個列表,而且還包含一個不能與整數相加的換行符。

我對您的代碼進行了一些修改,這應該可以工作:

Bob = {'name': 'bob', 'assignments': 80.0, 'presentation': 80.0, 'lab tasks': 60.0}
Geoff = {'name': 'Geoff', 'assignments': 90.0, 'presentation': 90.0, 'lab tasks': 90.0}
bob_scores = [Bob['assignments'], Bob['presentation'], Bob['lab tasks']]
geoff_scores = [Geoff['assignments'], Geoff['presentation'], Geoff['lab tasks']]
                                                                                                                                           
numbers_lists = bob_scores + geoff_scores
all_students_avg = sum(numbers_lists) / len(numbers_lists)
print("This is all the students average score across all subjects: ", all_students_avg)


輸出:

This is all the students average score across all subjects:  81.66666666666667

您收到錯誤的原因是變量numbers_lists是列表格式。
你可以試試這個

print(numbers_lists)

為了解決這個問題,您可以使用map()將所有元素轉換為整數。

num_list = list(map(int,numbers_lists))

您的列表結構不會像您期望的那樣工作。 您擁有的列表需要解壓縮,如此處所示https://www.w3schools.com/python/python_tuples_unpack.asp

您可以在末尾添加額外的括號以制作多個列表的列表。

Bob = {'name': 'bob', 'assignments': 80.0, 'presentation': 80.0, 'lab tasks': 60.0}
Geoff = {'name': 'Geoff', 'assignments': 90.0, 'presentation': 90.0, 'lab tasks': 90.0}
# if you want 2 seperate lists you could "unpack" them like this
numbers_lists1, number_lists2 = [Bob['assignments'], Bob['presentation'], Bob['lab tasks']], [Geoff['assignments'], "\n",
                                                                          Geoff['presentation'],
                                                                          Geoff['lab tasks']]
print(numbers_lists1)
print(number_lists2)

# if you want a list with 2 lists in it you will need to add extra [] on the ends
fixed_numbers_lists = [[Bob['assignments'], Bob['presentation'], Bob['lab tasks']], [Geoff['assignments'], "\n",
                                                                          Geoff['presentation'],
                                                                          Geoff['lab tasks']]]
print(fixed_numbers_lists)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM