- 我有一個作業日的字典。"0"=星期一,"1"=星期四...
- 作業日的值是一個串列--這些串列是時間跨度 。
我想創建一個新的字典,其中重復的時間跨度被合并。有一個ictonary鍵weekdays,包含一個類似作業日的串列和一個包含時間跨度的鍵time_span。
輸入:
{
"0":[
[
"09:00:00"。
"12:00:00".
]
],
"1":[
[
"09:00:00"。
"12:00:00"。
]
],
"2":[
[
"09:00:00"。
"12:00:00"。
],
[
"12:30:00"。
"15:30:00".
]
],
"3":[
[
"09:00:00"。
"12:00:00"。
]
],
"4":[
[
"09:00:00"。
"12:00:00"。
]
],
"5":[
[
"09:00:00"。
"12:00:00".
],
[
"12:30:00"。
"15:30:00".
]
],
"6":[
[
"09:00:00"。
"12:00:00".
],
[
"12:30:00"。
"15:30:00".
]
]
}
期望的輸出:
[
{
"weekdays":[0, 1, 3, 4] 。
"time_spans":[
[
"09:00:00"。
"12:00:00"。
]
]
},
{
"weekdays":[2, 5, 6] 。
"time_spans":[
[
"09:00:00"。
"12:00:00".
],
[
"12:30:00"。
"15:30:00".
]
]
}
]
如果對這個問題有更好的解決方案,我將洗耳恭聽。
我發現的解決方案并不奏效,它們假定 dict 的值不是一個串列。流行的解決方案似乎是翻轉鍵和值。
例如。找到有重復值的字典鍵
我想我太遲鈍了,沒有看到一個明顯的解決方案......
uj5u.com熱心網友回復:
與你找到的既定解決方案類似,你可以將串列(以及串列的串列)的表示方法存盤為字串,這使得將它們作為字典的鍵直接使用。
def timesheetMerge(timesheet)。
輸出 = []
獨特的班次 = {}。
for key, val in timesheet.items():
if str(val) not in unique_shifts.keys() 。
unique_shifts[str(val)] = len(output)
output.append({"weekdays": [int(key)], "time_spans": val})
else:
output[unique_shifts[str(val)]]["weekdays"].append(int(key))。
return output
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/308553.html
標籤:
下一篇:將Python串列寫成csv
