Home > Software design >  How can i change the hour in datetime (keys in a list) without changing anything else
How can i change the hour in datetime (keys in a list) without changing anything else

Time:10-06

I have a dict that looks like this

{datetime.datetime(2022, 6, 1, 0, 0): 42.3425, datetime.datetime(2022, 7, 1, 0, 0): 24.251666666666665, datetime.datetime(2022, 8, 1, 0, 0): 27.058333333333334, datetime.datetime(2022, 9, 1, 0, 0): 6.960000000000001, datetime.datetime(2022, 10, 1, 0, 0): 0.0, datetime.datetime(2022, 6, 2, 0, 0): 15.950833333333334, datetime.datetime(2022, 7, 2, 0, 0): 33.69916666666667, datetime.datetime(2022, 8, 2, 0, 0): 12.700000000000001, datetime.datetime(2022, 9, 2, 0, 0): 5.406666666666666, datetime.datetime(2022, 10, 2, 0, 0): 0.035833333333333335, datetime.datetime(2022, 6, 3, 0, 0): 14.744166666666667, datetime.datetime(2022, 7, 3, 0, 0): 30.455833333333334, datetime.datetime(2022, 8, 3, 0, 0): 14.745, datetime.datetime(2022, 9, 3, 0, 0): 8.981666666666667, datetime.datetime(2022, 10, 3, 0, 0): 0.035, datetime.datetime(2022, 6, 4, 0, 0): 42.14000000000001, datetime.datetime(2022, 7, 4, 0, 0): 18.213333333333335, datetime.datetime(2022, 8, 4, 0, 0): 11.723333333333336, datetime.datetime(2022, 9, 4, 0, 0): 6.530833333333334, datetime.datetime(2022, 10, 4, 0, 0): 0.4883333333333333, datetime.datetime(2022, 6, 5, 0, 0): 55.175000000000004, datetime.datetime(2022, 7, 5, 0, 0): 43.63749999999999, datetime.datetime(2022, 8, 5, 0, 0): 22.379999999999995, datetime.datetime(2022, 9, 5, 0, 0): 2.7191666666666667, datetime.datetime(2022, 6, 6, 0, 0): 20.865, datetime.datetime(2022, 7, 6, 0, 0): 35.29416666666666 }

i.e i have datetime as keys and some values, i want to change the hour of all of the keys to 12 (instead of 0) without changing anything else, for ex. i want to have (year, month, day, 12, 0) for all of them, how can I do that?

CodePudding user response:

Given your input as:

your_input = {datetime.datetime(2022, 6, 1, 0, 0): 42.3425, datetime.datetime(2022, 7, 1, 0, 0): 24.251666666666665, datetime.datetime(2022, 8, 1, 0, 0): 27.058333333333334, datetime.datetime(2022, 9, 1, 0, 0): 6.960000000000001, datetime.datetime(2022, 10, 1, 0, 0): 0.0, datetime.datetime(2022, 6, 2, 0, 0): 15.950833333333334, datetime.datetime(2022, 7, 2, 0, 0): 33.69916666666667, datetime.datetime(2022, 8, 2, 0, 0): 12.700000000000001, datetime.datetime(2022, 9, 2, 0, 0): 5.406666666666666, datetime.datetime(2022, 10, 2, 0, 0): 0.035833333333333335, datetime.datetime(2022, 6, 3, 0, 0): 14.744166666666667, datetime.datetime(2022, 7, 3, 0, 0): 30.455833333333334, datetime.datetime(2022, 8, 3, 0, 0): 14.745, datetime.datetime(2022, 9, 3, 0, 0): 8.981666666666667, datetime.datetime(2022, 10, 3, 0, 0): 0.035, datetime.datetime(2022, 6, 4, 0, 0): 42.14000000000001, datetime.datetime(2022, 7, 4, 0, 0): 18.213333333333335, datetime.datetime(2022, 8, 4, 0, 0): 11.723333333333336, datetime.datetime(2022, 9, 4, 0, 0): 6.530833333333334, datetime.datetime(2022, 10, 4, 0, 0): 0.4883333333333333, datetime.datetime(2022, 6, 5, 0, 0): 55.175000000000004, datetime.datetime(2022, 7, 5, 0, 0): 43.63749999999999, datetime.datetime(2022, 8, 5, 0, 0): 22.379999999999995, datetime.datetime(2022, 9, 5, 0, 0): 2.7191666666666667, datetime.datetime(2022, 6, 6, 0, 0): 20.865, datetime.datetime(2022, 7, 6, 0, 0): 35.29416666666666 }

You can use the .replace() method to change the hour of your datetime object and create a new dictionary like this:

output = {key.replace(hour=12):value for key,value in your_input.items()}

output:

{datetime.datetime(2022, 6, 1, 12, 0): 42.3425, datetime.datetime(2022, 7, 1, 12, 0): 24.251666666666665, datetime.datetime(2022, 8, 1, 12, 0): 27.058333333333334, datetime.datetime(2022, 9, 1, 12, 0): 6.960000000000001, datetime.datetime(2022, 10, 1, 12, 0): 0.0, datetime.datetime(2022, 6, 2, 12, 0): 15.950833333333334, datetime.datetime(2022, 7, 2, 12, 0): 33.69916666666667, datetime.datetime(2022, 8, 2, 12, 0): 12.700000000000001, datetime.datetime(2022, 9, 2, 12, 0): 5.406666666666666, datetime.datetime(2022, 10, 2, 12, 0): 0.035833333333333335, datetime.datetime(2022, 6, 3, 12, 0): 14.744166666666667, datetime.datetime(2022, 7, 3, 12, 0): 30.455833333333334, datetime.datetime(2022, 8, 3, 12, 0): 14.745, datetime.datetime(2022, 9, 3, 12, 0): 8.981666666666667, datetime.datetime(2022, 10, 3, 12, 0): 0.035, datetime.datetime(2022, 6, 4, 12, 0): 42.14000000000001, datetime.datetime(2022, 7, 4, 12, 0): 18.213333333333335, datetime.datetime(2022, 8, 4, 12, 0): 11.723333333333336, datetime.datetime(2022, 9, 4, 12, 0): 6.530833333333334, datetime.datetime(2022, 10, 4, 12, 0): 0.4883333333333333, datetime.datetime(2022, 6, 5, 12, 0): 55.175000000000004, datetime.datetime(2022, 7, 5, 12, 0): 43.63749999999999, datetime.datetime(2022, 8, 5, 12, 0): 22.379999999999995, datetime.datetime(2022, 9, 5, 12, 0): 2.7191666666666667, datetime.datetime(2022, 6, 6, 12, 0): 20.865, datetime.datetime(2022, 7, 6, 12, 0): 35.29416666666666}

https://docs.python.org/3/library/datetime.html#datetime.date.replace

  • Related