Pregunta

¿Es posible agrupar los resultados por una clave que se encuentra en una matriz de objetos en una lista?

Por ejemplo, digamos que tengo una tabla de respuestas de la encuesta ( survey_responses ), y cada entrada representa una respuesta única. Una o más de las preguntas de la encuesta es una opción múltiple, por lo que las respuestas almacenadas podrían parecerse a:

survey_responses.insert({
    'name': "Joe Surveylover",
    'ip': "127.0.0.1",
    'favorite_songs_of_2009': [
        {'rank': 1, 'points': 5, 'title': "Atlas Sound: Quick Canals"},
        {'rank': 2, 'points': 4, 'title': "Here We Go Magic: Fangela"},
        {'rank': 3, 'points': 3, 'title': "Girls: Hellhole Ratrace"},
        {'rank': 4, 'points': 2, 'title': "Fever Ray: If I Had A Heart"},
        {'rank': 5, 'points': 1, 'title': "Bear in Heaven: Lovesick Teenagers"}],
    'favorite_albums_of_2009': [
        # and so on
    ]})

¿Cómo puedo agrupar por el título de favorite_songs_in_2009 para obtener el número total de puntos para cada canción en la matriz?

¿Fue útil?

Solución

Parece que tu única opción es hacer esto en tu propio código Python:

song_points = {}
for response in survey_responses.find():
    for song in response['favorite_songs_of_2009']:
        title = song['title']
        song_points[title] = song_points.get(title, 0) + song['points']

Obtendrás tus resultados en la variable song_points .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top