Как посчитать частоту элементов в списке? - PullRequest
192 голосов
/ 29 января 2010

Мне нужно найти частоту элементов в списке

a = [1,1,1,1,2,2,2,2,3,3,4,5,5]

выход ->

b = [4,4,2,1,2]

Также я хочу удалить дубликаты из

a = [1,2,3,4,5]

Ответы [ 28 ]

0 голосов
/ 21 февраля 2018
a=[1,2,3,4,5,1,2,3]
b=[0,0,0,0,0,0,0]
for i in range(0,len(a)):
    b[a[i]]+=1
0 голосов
/ 10 июля 2015
#!usr/bin/python
def frq(words):
    freq = {}
    for w in words:
            if w in freq:
                    freq[w] = freq.get(w)+1
            else:
                    freq[w] =1
    return freq

fp = open("poem","r")
list = fp.read()
fp.close()
input = list.split()
print input
d = frq(input)
print "frequency of input\n: "
print d
fp1 = open("output.txt","w+")
for k,v in d.items():
fp1.write(str(k)+':'+str(v)+"\n")
fp1.close()
0 голосов
/ 06 декабря 2017

Этот подход можно попробовать, если вы не хотите использовать какую-либо библиотеку и делать ее простой и короткой!

a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
marked = []
b = [(a.count(i), marked.append(i))[0] for i in a if i not in marked]
print(b)

о / р

[4, 4, 2, 1, 2]
0 голосов
/ 30 октября 2017

Вы можете использовать встроенную функцию, предусмотренную в python

l.count(l[i])


  d=[]
  for i in range(len(l)):
        if l[i] not in d:
             d.append(l[i])
             print(l.count(l[i])

Приведенный выше код автоматически удаляет дубликаты в списке, а также печатает частоту каждого элемента в исходном списке и списке без дубликатов.

Две птицы за один выстрел! X D

0 голосов
/ 03 сентября 2017
num=[3,2,3,5,5,3,7,6,4,6,7,2]
print ('\nelements are:\t',num)
count_dict={}
for elements in num:
    count_dict[elements]=num.count(elements)
print ('\nfrequency:\t',count_dict)
0 голосов
/ 20 декабря 2015

Еще одно решение с другим алгоритмом без использования коллекций:

def countFreq(A):
   n=len(A)
   count=[0]*n                     # Create a new list initialized with '0'
   for i in range(n):
      count[A[i]]+= 1              # increase occurrence for value A[i]
   return [x for x in count if x]  # return non-zero count
0 голосов
/ 19 апреля 2019

Простое решение с использованием словаря.

def frequency(l):
     d = {}
     for i in l:
        if i in d.keys():
           d[i] += 1
        else:
           d[i] = 1

     for k, v in d.iteritems():
        if v ==max (d.values()):
           return k,d.keys()

print(frequency([10,10,10,10,20,20,20,20,40,40,50,50,30]))
0 голосов
/ 19 апреля 2017

Еще один способ - использовать словарь и список list.count, ниже наивного способа сделать это.

dicio = dict()

a = [1,1,1,1,2,2,2,2,3,3,4,5,5]

b = list()

c = list()

for i in a:

   if i in dicio: continue 

   else:

      dicio[i] = a.count(i)

      b.append(a.count(i))

      c.append(i)

print (b)

print (c)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...