Как считать частоту элементов в списке?

Некоторые варианты:

find . -cmin -60 -exec ls -ld {} \;
find . -cmin -60 -type f -exec ls -l {} \;
find . -cmin -60 -print0 | xargs -0 ls -ld
find . -cmin -60 -type f -print0 | xargs -0 ls -l

Последние два лучше, но требуют GNU-findutils.

Редактировать: Как отмечалось другими, -cmin -60 означает недавно измененные файлы, -cmin +60 означает не недавно измененные файлы.

213
задан Flimzy 30 May 2018 в 04:29
поделиться

8 ответов

Так как список упорядочен, можно сделать так:

a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
from itertools import groupby
[len(list(group)) for key, group in groupby(a)]

Вывод:

[4, 4, 2, 1, 2]
129
ответ дан 23 November 2019 в 04:26
поделиться

Другой подход выполнения этого, хотя при помощи более тяжелой, но мощной библиотеки - NLTK.

import nltk

fdist = nltk.FreqDist(a)
fdist.values()
fdist.most_common()
0
ответ дан 23 November 2019 в 04:26
поделиться

Для вашего первого вопроса, итайте список и используйте словарь для отслеживания элементов.

Для вашего второго вопроса просто используйте заданный оператор.

4
ответ дан 23 November 2019 в 04:26
поделиться
seta = set(a)
b = [a.count(el) for el in seta]
a = list(seta) #Only if you really want it.
7
ответ дан 23 November 2019 в 04:26
поделиться

Подсчет частоты элементов, вероятно, лучше всего сделать с помощью словаря:

b = {}
for item in a:
    b[item] = b.get(item, 0) + 1

Чтобы удалить дубликаты, используйте набор:

a = list(set(a))
24
ответ дан 23 November 2019 в 04:26
поделиться

Для подсчета количества появлений:

from collections import defaultdict

appearances = defaultdict(int)

for curr in a:
    appearances[curr] += 1

для удаления дубликатов:

a = set(a) 
47
ответ дан 23 November 2019 в 04:26
поделиться

В Python 2.7 (или новее) вы можете использовать Collections.counter :

import collections
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
counter=collections.Counter(a)
print(counter)
# Counter({1: 4, 2: 4, 3: 2, 5: 2, 4: 1})
print(counter.values())
# [4, 4, 2, 1, 2]
print(counter.keys())
# [1, 2, 3, 4, 5]
print(counter.most_common(3))
# [(1, 4), (2, 4), (3, 2)]

Если вы используете Python 2.6 или старше, вы можете скачать его здесь .

487
ответ дан 23 November 2019 в 04:26
поделиться

в Python 2.7+, вы могли бы использовать коллекции. Counter подсчитать элементы

>>> a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
>>>
>>> from collections import Counter
>>> c=Counter(a)
>>>
>>> c.values()
[4, 4, 2, 1, 2]
>>>
>>> c.keys()
[1, 2, 3, 4, 5]
23
ответ дан 23 November 2019 в 04:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: