Форум сайта python.su
Здравствуйте.
Есть список, каждый элемент которого это словарь:
ml =
[
{'volue': ‘google’, ‘parametr’: 2},
{'volue': ‘yandex’, ‘parametr’: 7},
{'volue': ‘google’, ‘parametr’: 10}
]
Есть ли способы посчитать число вхождений параметра ‘volume’?
В идеале получить такой результат:
google - 2
yandex -1
Способ с обходом в цикле мне понятен. Хочется найти правильный метод.
Офлайн
>>> import itertools >>> >>> lst = [ ... {'a': 1}, ... {'b': 1}, ... {'a': 1}, ... {'b': 1}, ... {'a': 1}, ... {'c': 1}, ... ] >>> >>> out = {a:len(tuple(b)) for a, b in ... itertools.groupby(sorted(next(iter(i)) for i in lst))} >>> >>> out {'a': 3, 'b': 2, 'c': 1} >>>
Отредактировано py.user.next (Ноя. 18, 2019 00:14:20)
Офлайн
vmprogПравильный метод тот который дает верный результат. Если у вас получается с циклом то так и делайте это основная конструкция языка. Почему вы ее боитесь?
Способ с обходом в цикле мне понятен. Хочется найти правильный метод.
from collections import Counter ml = [ {'volue': "google", "parametr": 2}, {'volue': "yandex", "parametr": 7}, {'volue': "google", "parametr": 10} ] print(Counter(map(lambda d:d["volue"],ml)))
Отредактировано doza_and (Ноя. 18, 2019 06:24:25)
Офлайн
doza_and
Правильный метод тот который дает верный результат. Если у вас получается с циклом то так и делайте это основная конструкция языка. Почему вы ее боитесь?
Офлайн