[英]How to group python dicts by key?
我們有一個字典列表:
example = [
{'a': 11, 'b': 2, 'c': 3},
{'a': 11, 'b': 22, 'c': 33},
{'a': 11, 'b': 222, 'c': 333}
]
如何通過重復鍵a
對字典進行分組?
example = {
11: [
{'b': 2, 'c': 3},
{'b': 22, 'c': 33},
{'b': 222, 'c': 333}
]
}
在 O(n) 中沒有什么太難的;
res_dic = {}
for dic in example :
val = str(dic.pop('a'))
if res_dic.get(val):
res_dic[val].append(dic)
else:
res_dic[val] = [dic,]
可以使用itertools.groupby
進行分組。
創建一個從可迭代對象返回連續鍵和組的迭代器。 鍵是 function 計算每個元素的鍵值。 如果未指定或為 None,則 key 默認為標識 function 並返回未更改的元素。 通常,iterable 需要已經在同一個鍵 function 上排序。
from itertools import groupby
example = [
{'a': 11, 'b': 2, 'c': 3},
{'a': 11, 'b': 22, 'c': 33},
{'a': 11, 'b': 222, 'c': 333}
]
for k, g in groupby(example, key=lambda v: v.pop("a", None)):
print(k, list(g))
Output:
11 [{'b': 2, 'c': 3}, {'b': 22, 'c': 33}, {'b': 222, 'c': 333}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.