[英]Sorting and arranging a dictionary in python with datetime keys
我在 python 中制作字典時遇到問題,我有一個字典,它的鍵由日期時間數據類型組成,這是從單個字典中提取的,問題是有時日期在覆蓋相同日期的數據中重復。 數據的格式如下所示:
{
"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]
}
你想使用 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]})
這是一種可能的建議。 從您的問題中不太清楚數據來自哪里,所以我不知道這個建議是否符合您的需求。
data_list = [
("2020-09-09", 'data1'),
("2020-09-08", 'A'),
("2020-09-08", 'B'),
("2020-09-07", 'data2'),
("2020-09-08", 'C')]
d = {}
for date,value in data_list:
if date in d:
d[date].append(value)
else:
d[date] = [value]
# d = {'2020-09-09': ['data1'], '2020-09-08': ['A', 'B', 'C'], '2020-09-07': ['data2']}
或者,使用defaultdict
:
import collections
d = collections.defaultdict(list)
for date, value in data_list:
d[date].append(value)
# d = defaultdict(<class 'list'>, {'2020-09-09': ['data1'], '2020-09-08': ['A', 'B', 'C'], '2020-09-07': ['data2']})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.