2010-04-07 3 views
-1

Я хочу группе на Dict ключаItertools группа по функциональности

>>> x 
[{'a': 10, 'b': 90}, {'a': 20}, {'a': 30}, {'a': 10}] 
>>> [(name, list(group)) for name, group in groupby(x, lambda p:p['a'])] 
[(10, [{'a': 10, 'b': 90}]), (20, [{'a': 20}]), (30, [{'a': 30}]), (10, [{'a': 10}])] 

Это сусло группа по ключевым 10 :(

ответ

4

docs say:

itertools.groupby:
Это порождает разрыв или новой группы каждый раз, когда изменяется значение ключевой функции (поэтому обычно необходимо отсортировать данные с помощью t он такой же ключевая функция). Это поведение отличается от SQL GROUP BY, которое объединяет общие элементы независимо от их порядка ввода.

+0

>>> x.sort (ключ = лямбда-х: х [ 'а']) >>> [(имя, список (группа)) для имени, группы в GroupBy (х, лямбда-р: p ['a'])] [(10, [{'a': 10, 'b': 90}, {'a': 10}]), (20, [{'a': 20}]), (30, [{'a': 30}])] Этот код решает мою проблему thx для вашей поддержки :) – Nilesh

 Смежные вопросы

  • Нет связанных вопросов^_^