hola soy nuevo en python, si tengo un txt.file asi
23/3/2020 12 7/7/2020 15 25/1/2020 16 14/2/2020 12 12/3/2020 19 1/11/2020 11 16/6/2020 20 14/3/2020 13 13/11/2020 20(todas son cadenas) y quiero convertirlo en un dict() con mm/yyyy como clave y la suma de los números en el mismo mes como valor, ¿qué debo hacer?
Recomendaría simplemente usar el análisis de fecha y hora integrado de Python y collections.counter para esto. Esencialmente, analice las fechas y agregue el conteo al contador.
from collections import Counter from datetime import datetime counts = Counter() with open(path) as f: for date, count in map(str.split, f): date = datetime.strptime(date, '%d/%m/%Y') counts[date.month, date.year] += int(count) countsEl resultado es un dict con tuplas mes-año y totales:
Counter({(3, 2020): 44, (7, 2020): 15, (1, 2020): 16, (2, 2020): 12, (11, 2020): 31, (6, 2020): 20})El siguiente fragmento de código toma el archivo, lee una línea a la vez y mantiene contadores para cada combinación de month/year vista hasta ahora:
month_counters = {} with open('test.txt', 'r') as input_file: lines = input_file.readlines() for line in lines: [date, num] = line.split() month_and_year = date[date.index("/") + 1:] if month_and_year in month_counters: month_counters[month_and_year] += int(num) else: month_counters[month_and_year] = int(num) print(month_counters)