GOOGLE ADS

вторник, 26 апреля 2022 г.

Код на Python, который подсчитывает повторяющиеся элементы и возвращает элемент, повторяющийся больше всего раз и сколько раз

У меня есть список с целыми числами, мне нужно найти, какой элемент повторяется больше всего, тогда функция должна возвращать две переменные (значение, число), значение - повторяющийся элемент, а число - количество раз, которое повторяется

вход

B = [1, 5, 1, 3, 5, 1]

выход

1 3

У меня есть код, который работает с первым элементом в списке, но когда он переходит к следующему циклу, он начинает все с нуля, поэтому я изо всех сил пытался сохранить то, что я получил в первом цикле, и сравнить со вторым циклом, чтобы увидеть, какой один мне нужно сохранить.

Для этой функции мне не разрешено использовать какой-либо модуль или библиотеку, например «count», или любой другой расширенный код, настолько простой, насколько это возможно для уровня новичка.

def counting(B):
n = len(B)
tempcount = []
tempcval = []
for i in range(0,n-1):
cval=B[i]
count = 0
for next in B:
if next == cval:
count += 1
tempcount.append(count)
tempcval.append(cval)
return count,cval
def main():
list = [1, 5, 1, 3, 5, 1]
a,b = counting(list)
print(a,b)
main()

ожидаемый результат

3 1

фактический результат

2 5


Решение проблемы

Хорошим решением может быть использование collections.Counter:

>>> import collections
>>> c = collections.Counter([1, 5, 1, 3, 5, 1])
>>> c
Counter({1: 3, 5: 2, 3: 1})
>>> c.most_common(1)
[(1, 3)]

В функции это может выглядеть так:

import collections
def counting(the_list):
c = collections.Counter(the_list)
data = c.most_common(1)[0]
print('value', data[0])
print('count', data[1])
return data[1], data[0]

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...