【发布时间】:2015-04-02 09:47:18
【问题描述】:
给定一个字典列表:
list = [{"foo": "a", "bar": "1", "baz": "A_CODE"},
{"foo": "a", "bar": "12", "baz": "A_CODE"},
{"foo": "b", "bar": "2", "baz": "ANOTHER_CODE"}]
通过基于baz 对字典进行分组来获得以下内容的最优雅方法是什么? bar 可以省略。
items = [{"foo": "a", "baz": "A_CODE", "count": 2},
{"foo": "b", "baz": "ANOTHER_CODE", "count": 1}]
这是我现在的做法:
items = []
for key, group in itertools.groupby(list, lambda item: item["baz"]):
item["count"] = sum([1 for item in group])
items.append(item)
【问题讨论】:
-
bar键发生了什么事?字典按什么标准分组?字典是否按其选择标准排序? -
请查看编辑。抱歉缩进。
-
我还是没看到 bar 发生了什么
-
那么
bar键呢?那么顺序呢,输入列表总是按baz排序的吗?你自己有没有尝试过? -
列表未排序。请查看我所做的编辑。谢谢
标签: python list dictionary count