Ответ 1
>>> x=['a','a','b','c','c','c']
>>> map(x.count,x)
[2, 2, 1, 3, 3, 3]
>>> dict(zip(x,map(x.count,x)))
{'a': 2, 'c': 3, 'b': 1}
>>>
['a','a','b','c','c','c']
to
[2, 2, 1, 3, 3, 3]
и
{'a': 2, 'c': 3, 'b': 1}
>>> x=['a','a','b','c','c','c']
>>> map(x.count,x)
[2, 2, 1, 3, 3, 3]
>>> dict(zip(x,map(x.count,x)))
{'a': 2, 'c': 3, 'b': 1}
>>>
Это кодирование должно дать результат:
from collections import defaultdict
myDict = defaultdict(int)
for x in mylist:
myDict[x] += 1
Конечно, если вам нужен список inbetween результата, просто получите значения из dict (mydict.values ()).
Используйте set
только для подсчета каждого элемента один раз, используйте метод списка count
, чтобы их подсчитать, сохраните их в dict
с помощью ключа как элемента, а вхождение - значение.
l=["a","a","b","c","c","c"]
d={}
for i in set(l):
d[i] = l.count(i)
print d
Вывод:
{'a': 2, 'c': 3, 'b': 1}
В Python ≥2.7 или ≥3.1 у нас есть встроенная структура данных collections.Counter для подсчета списка
>>> l = ['a','a','b','c','c','c']
>>> Counter(l)
Counter({'c': 3, 'a': 2, 'b': 1})
После этого легко построить [2, 2, 1, 3, 3, 3]
.
>>> c = _
>>> [c[i] for i in l] # or map(c.__getitem__, l)
[2, 2, 1, 3, 3, 3]
a = ['a','a','b','c','c','c']
b = [a.count(x) for x in a]
c = dict(zip(a, b))
Я включил ответ Вима. Отличная идея
Второй может быть просто
dict(zip(['a','a','b','c','c','c'], [2, 2, 1, 3, 3, 3]))
Для первого:
l = [a, a, b, c, c,
карта (l.count, л)
d=defaultdict(int)
for i in list_to_be_counted: d[i]+=1
l = [d[i] for i in list_to_be_counted]