Skip to main content
 首页 » 编程设计

python之在包含两个元素的列表中按项目表示

2025年05月04日25birdshome

我实际上使用 Google Chart API 和 Flask。我从我的数据库中检索数据,然后将它们添加到我的列表中。

我的 list :

[['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)  

请您参考如下方法:

您可以使用字典作为临时变量:

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]]