我擁有的:
d = {datetime.date(2013, 1, 1): {'15169': 2, '56203': 5, '2519': 3, '18144': 3, '9737': 4},
datetime.date(2014, 1, 1): {'15169': 5, '56203': 3, '2519': 2, '18144': 1, '9737': 0}}
我想要的是:
{15169:[2,5], 56203:[5,3], 2519:[3,2], 18144:[3,1], 9737:[4,0]}
是否有任何直接的方法來實作這一目標?嘗試了多種方法,但看起來沒有任何直接的方法。
uj5u.com熱心網友回復:
ans = {}
[[ans.setdefault(k, []).append(v) for k, v in x.items()] for x in d.values()]
ans
# {'15169': [2, 5],
# '56203': [5, 3],
# '2519': [3, 2],
# '18144': [3, 1],
# '9737': [4, 0]}
或者使用熊貓
pd.DataFrame(d).apply(list, axis=1).to_dict()
# {'15169': [2, 5],
# '56203': [5, 3],
# '2519': [3, 2],
# '18144': [3, 1],
# '9737': [4, 0]}
uj5u.com熱心網友回復:
就像我想象的那樣簡單,使用defaultdict:
from collections import defaultdict
out = defaultdict(list)
for x in d.values():
for k,v in x.items():
out[k].append(v)
輸出:
defaultdict(list,
{'15169': [2, 5],
'56203': [5, 3],
'2519': [3, 2],
'18144': [3, 1],
'9737': [4, 0]})
uj5u.com熱心網友回復:
我可能是錯的,但我不知道有任何方法可以實作您想要實作的目標。即便如此,實作那個特定的結果也應該不難。我認為最好的方法是實作你自己的group-by()方法!嘗試推理將原始資料中的資料分組Dictionary到所需物件中所需的步驟。看起來您正在按 p->d 分組,其中 p 是 Dictionary 鍵,而 d 是該屬性的鍵。這正是 p->d 的分組!我不知道這個答案是否足夠清楚,我不想提供代碼以便您不會錯過您的學習經歷,但是如果您需要它,請詢問,我會盡力為您提供示例: )
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/365733.html
