Как вы находите большинство дубликатов в списке 2D? - PullRequest
0 голосов
/ 10 октября 2019

У меня есть 2d список, который я хотел бы вернуть большинству дубликатов, используя понимание списка. Например, у меня есть список ниже

a = [[10, 15, 17,],[20,21,27],[10,15,17],[21,27,28],[21,27,28],[5,10,15],[15,17,20]]

Я бы хотел, чтобы мой результат был

b = [[10,15,17],[21,27,28]

Ответы [ 3 ]

2 голосов
/ 10 октября 2019

Общим решением для подсчета повторений является collection.Counter :

from collections import Counter

a = [[10, 15, 17], [20, 21, 27], [10, 15, 17], [21, 27, 28], [21, 27, 28], [5, 10, 15], [15, 17, 20]]

# count duplicates
counts = Counter(map(tuple, a))

# find the maximum count (the values of counts are the duplicate count)
maximum_count = max(counts.values())

# filter and convert back to list
result = [list(e) for e, count in counts.items() if count == maximum_count]

print(result)

Output

[[10, 15, 17], [21, 27, 28]]

В вашем случае, в частности,так как элементы списка являются списком, вам необходимо преобразовать их в кортежи (чтобы сделать их хешируемыми), а затем просто отфильтровать список и сохранить элементы с максимальным количеством.

1 голос
/ 10 октября 2019

Одна строка разделена здесь:

[ a[k] 
  for k in range(len(a)) 
  if  a.count( a[k] ) > 1
  and k == a.index( a[k] ) ]
0 голосов
/ 10 октября 2019

Самый простой способ сделать это - найти счетчик для каждого элемента и сохранить максимальный счет. Затем отобразите все элементы с максимальным числом (удаляя дубликаты).

Вам подойдет следующий код:

a = [[10, 15, 17,],[20,21,27],[10,15,17],[21,27,28],[21,27,28],[5,10,15],[15,17,20]]
check=0
for i in a:
    if a.count(i) > check:
         check=a.count(i)    #Check to see maximum count

b=[]
for i in a:
    if a.count(i) == check:   #Choosing elements with maximum count
        if i not in b:        #Eliminating duplicates
            b.append(i)

print(b)

Вывод:

[[10, 15, 17], [21, 27, 28]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...