Question

Est-il possible de regrouper les résultats en fonction d'une clé trouvée dans un tableau d'objets d'une liste?

Par exemple, disons que j'ai un tableau des réponses à une enquête ( survey_responses ) et que chaque entrée représente une seule réponse. Une ou plusieurs des questions de l’enquête étant à choix multiple, les réponses stockées pourraient ressembler à:

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

comment puis-je grouper par le titre de favorite_songs_in_2009 pour obtenir le nombre total de points pour chaque chanson du tableau?

Était-ce utile?

La solution

Il semble que votre seule option est de le faire dans votre propre code 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']

Vous obtiendrez vos résultats dans la variable song_points .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top