实际上,我使用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/

10-12 20:04