Было бы проще использовать collections.Counter()
здесь:
>>> from collections import Counter
>>> lst = [["Sam", "John", "Alex", "Sam", "Alex"], ["Max", "Sam", "Max"]]
>>> list(map(Counter, lst))
[Counter({'Sam': 2, 'Alex': 2, 'John': 1}), Counter({'Max': 2, 'Sam': 1})]
Вы также можете использовать понимание списка вместо использования map()
, если это таклегче понять:
>>> [Counter(l) for l in lst]
[Counter({'Sam': 2, 'Alex': 2, 'John': 1}), Counter({'Max': 2, 'Sam': 1})]
Примечание: Counter
является подклассом dict
, поэтому вы можете обращаться с ними как с обычными словарями.
Вы всегда можете привести к dict()
, если хотите, также:
>>> [dict(Counter(l)) for l in lst]
[{'Sam': 2, 'John': 1, 'Alex': 2}, {'Max': 2, 'Sam': 1}]
Вы также не должны использовать list
в качестве имени переменной, так как оно затеняетвстроенная функция list()
.