实际上,我使用Google Chart API和Flask。我从数据库中检索数据,然后将它们添加到列表中。
我的清单:
[['Swimming', 4], ['Football', 4], ['Football', 2]], [['Swimming', 2]
例如,我想获取
'Football'
的均值,所以有['Football', 3]
。 'Swimming'
相同。因此,预期输出为:[['Swimming', 4], ['Football', 3]]
我怎样才能做到这一点?
代码:
def get_quotation_by_activity(self, id_child):
cursor = self.link.cursor()
try:
cursor.execute("SELECT previous_activity, quotation FROM sessions, sessions_questions_asked WHERE sessions.id = sessions_questions_asked.id_session AND child=%s;", [id_child]);
quotation_activity = []
quotation_activity_mean = []
for row in cursor:
quotation_activity.append([row[0], row[1]])
except (Exception, psycopg2.DatabaseError) as error:
print(error)
return []
print(quotation_activity)
#Some tests..
'''for i in quotation_activity:
activity = i[0]
quotation = i[1]
if not i in quotation_activity_mean:
quotation_activity_mean.append(i)'''
print(quotation_activity_mean)
return quotation_activity
@app.route("/statistics")
def stats():
quotation_activity = db.get_quotation_by_activity(6)
return render_template('statistics.html', quotation_activity= quotation_activity)
最佳答案
您可以将dict用作临时变量:
values = [['Swimming', 4], ['Football', 4], ['Football', 2], ['Swimming', 2]]
result = {}
for activity, quotation in values:
if activity in result:
result[activity].append(quotation)
else:
result[activity] = [quotation]
final_result = [[name, sum(quotations) / len(quotations)] for name, quotations in result.items()]
print(final_result)
返回值:
[['Swimming', 3.0], ['Football', 3.0]]
关于python - 列表中的均值,每个元素有两个元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44522906/