首页 > 解决方案 > 使用日期时间键在python中对字典进行排序和排列

问题描述

我在用 python 制作字典时遇到了麻烦,我有一个字典,它的键是由 datetime 数据类型组成的,它是从单个字典中获取的,问题是有时日期在覆盖相同日期的数据中重复。数据的格式如下所示:

{
"2020-09-09": [data],
"2020-09-08": [A],
"2020-09-08": [B],
"2020-09-07": [data],
"2020-09-08": [C]
}

在python中,我编写了代码来制作这样的字典,

row = dict({
            str(datetime.datetime.strptime(row.get('date'), '%Y-%m-%d').date()): [row]
        }) 

我从中得到的输出,我不确定如何重新格式化它,因为密钥不能在字典中重复

{
"2020-09-09": [data],
"2020-09-08": [C],
"2020-09-07": [data],
}

所需的输出:

{
"2020-09-09": [data],
"2020-09-08": [[A],[B],[C]],
"2020-09-07": [data]
}

标签: pythonsortingdictionary

解决方案


你想使用 collections.defaultdict

from collections import defaultdict
dd = defaultdict(list)
dd["1"].append(3)
dd["2"].append(4)
dd["1"].append(1)
dd["2"].append(2)

print(dd)
# defaultdict(<class 'list'>, {'1': [3, 1], '2': [4, 2]})

如果您想在每次追加后对列表进行排序,那么您可以使用二进制插入自定义实现列表

或添加值后手动排序

for el in dd.values():
    el.sort()
print(dd)
# defaultdict(<class 'list'>, {'1': [1, 3], '2': [2, 4]})

推荐阅读