简体   繁体   中英

How do I add together all numbers from the same week into a list?

I've been googling for answers for about 2 days now and I'm still stuck.

I have a huge list of dates and numbers like this:

 1.1.2018 0:00;2590
 3.1.2018 1:00;2530
 4.2.2018 2:00;1700
 6.2.2018 3:00;2340
 18.3.2018 4:00;1800
 15.4.2018 5:00;2850
 ...

And I need to add all numbers together that have the same week number and return total of numbers in a week like this:

0;0
1;549730
2;645010
3;681320
4;677060
5;698450
...etc
52;576280
53;81640

This is my code so far, I've separated the dates and numbers in their own lists but not sure how to go on from here. I'm supposed to use strftime %W somehow, but don't know how.

import datetime
from datetime import date
from datetime import datetime

def main():
    file = open("2018Electricity.txt", "r")
    line = file.readline()
    time_list = []
    electricity_list = []
    total = []

    for i in file:
        time = i.strip().split(';')[0]
        electricity = i.strip().split(';')[1]
        time_list.append(datetime.strptime(time, '%d.%m.%Y %H:%M'))
        electricity_list.append(electricity)
        
    file.close()

main()

Just use a simple dictionary and run it sequentially.

import datetime
def solution():
    data = [
        "1.1.2018 0:00;2590",
        "3.1.2018 1:00;2530",
        "4.2.2018 2:00;170",
        "6.2.2018 3:00;2340",
        "18.3.2018 4:00;1800",
        "15.4.2018 5:00;2850"
    ]

    result = {} # store in a dictionary

    for date in data:
        day = int(date.split(".")[0])
        month = int(date.split(".")[1])
        year = int(date.split(".")[2][0:5])
        week = datetime.date(year, month, day).isocalendar()[1]
        if week not in result:
            result[week] = 0
        result[week] += int(date.split(";")[1])
    return result

result = solution()
for week, value in result.items():
    print(f"{week};{value}")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM