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
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à ç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
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
}
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
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])
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.

Merci