Bonjour,
alors je sais que le titre n'est pas très explicites mais je n'est pas vraiment de meilleur "définition" du problème.
alors voila à partir d'une base de donnée je reçoit plusieurs milliers de lignes
Voilà ça c'est pour le contexte, je me retrouve avec un dictionnaire tel que dict_messages[datetime.date] = nombre de message, voici un extrais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 async with ctx.typing(): async with aiosqlite.connect("data.db") as db: async with db.execute(req, parameters) as cursor: async for row in cursor: channel_id = row[0] key = datetime.datetime.utcfromtimestamp(row[1]).date() if channel and channel_id != channel.id: continue dict_messages[key] = dict_messages.get(key, 0) + 1
Voilà donc ça c'est pour le contexte, maintenant j'aimerais cumulé les valeurs des clefs inférieurs, pour l'instant j'ai ça, ça semble marcher mais ça me parais assez moche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 { datetime.date(2019, 1, 23): 56, datetime.date(2019, 1, 24): 6, datetime.date(2019, 1, 25): 4, datetime.date(2019, 1, 26): 206, datetime.date(2019, 1, 27): 328, datetime.date(2019, 1, 28): 107, datetime.date(2019, 1, 29): 134, datetime.date(2019, 1, 30): 236, datetime.date(2019, 1, 31): 103 }
Je suis sur qu'il y a une façon plus élégante de faire ça, je pense à numpy / itertools mais je ne les connais absolument pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 dict_messages_cumul = {} for k, v in dict_messages.items(): dict_messages_cumul[k] = sum([v2 for k2, v2 in dict_messages.items() if k2<=k])
Merci
Partager