[英]Group values by keys in list of dictionaries
我擁有的:
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]}
有沒有直接的方法來實現這一目標? 嘗試了多種方法,但看起來沒有任何直接的方法。
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]}
或使用 pandas
pd.DataFrame(d).apply(list, axis=1).to_dict()
# {'15169': [2, 5],
# '56203': [5, 3],
# '2519': [3, 2],
# '18144': [3, 1],
# '9737': [4, 0]}
就像我想象的那樣簡單,使用defaultdict
:
from collections import defaultdict
out = defaultdict(list)
for x in d.values():
for k,v in x.items():
out[k].append(v)
Output:
defaultdict(list,
{'15169': [2, 5],
'56203': [5, 3],
'2519': [3, 2],
'18144': [3, 1],
'9737': [4, 0]})
我可能錯了,但我不知道有什么方法可以達到你想要的效果。 即便如此,實現這一特定結果應該一點也不難。 我認為最好的方法是實現自己的group-by()
方法! 嘗試推理將原始Dictionary
中的數據分組到所需的 object 中所需的步驟。 看起來您正在按 p->d 進行分組,其中 p 是字典鍵,而 d 是該屬性的鍵作為回報。 那正是p->d的分組,我不知道這個答案是否足夠清楚,我不想提供代碼,這樣你就不會錯過你的學習經歷:但如果你需要它就問和我會盡力為你提供一個例子:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.