Python 中的日期时间表示

问题描述 投票:0回答:1

我有一个包含一些时间戳的文件。我想显示事件频率/小时,没有零填充。我有:

dictionary = {}
for line in my_list:
    line = line.strip()
    time = datetime.datetime.strptime(line, "%A, %d %B %Y, %I:%M %p").strftime("%H")
    if time in dictionary:
        dictionary[time] += 1
    else:
        dictionary[time] = 1
sorted_days = sorted(dictionary.items(), key=lambda dictionary:dictionary[1])
for time in sorted_days:
    print("{0};{1}".format(time[0], time[1]))

目前,显示格式为 00;323、01;21 等,范围为 00 到 23。我想要的是没有前导零的小时:1;21、2;352 等。我尝试了 strftime(" %-H"),它确实删除了第一个0,但是当我想按键使用sorted()时,它会导致问题,顺序为0、1、10等。我尝试了lstrip并替换,但没有成功。如何以不干扰我尝试“排序”字典的方式删除 0 填充(是的,我知道字典无法排序,我仅指显示格式)?

python dictionary datetime
1个回答
0
投票

我想通了。遇到类似问题的任何人可能会发现我的答案很有用。我尝试过多种解决方案。可以更改按键名称:

dictionary[new_key] = dictionary.pop(old_key)

@FObersteiner 在评论中提供了另一个可行的解决方案:使用 int(hour) 作为键。此外,人们也可以不理会钥匙。我遇到的问题是,一旦删除了 0,排序就无法识别它的时间。解决这个问题需要一个新的列表/数组。对字典(填充零)进行排序,然后将值推送到新数组,然后循环或过滤以删除零。上述任何一种方法都可以,并且将小时数设为整数是最简单的。

© www.soinside.com 2019 - 2024. All rights reserved.