Computer >> Máy Tính >  >> Lập trình >> Python

Tìm phần tử phổ biến nhất trong danh sách 2D bằng Python

Danh sách 2D có danh sách là phần tử của nó. Nói cách khác nó là một danh sách các danh sách. Trong bài viết này, chúng tôi bắt buộc phải tìm phần tử phổ biến nhất trong số tất cả các danh sách bên trong danh sách.

Với max và count

Chúng tôi thiết kế một theo dõi có điều kiện để kiểm tra sự hiện diện của một phần tử trong một danh sách con nhất định. Sau đó, chúng tôi áp dụng hàm max cùng với hàm đếm để lấy phần tử có tần số lớn nhất.

Ví dụ

def highest_freq(lst):
   SimpleList = [el for sublist in lst for el in sublist]
   return max( SimpleList, key= SimpleList.count)
# Given list
listA = [[45, 20, 11], [20, 17, 45], [20,13, 9]]
print("Given List:\n",listA)
print("Element with highest frequency:\n",highest_freq(listA))

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given List:
[[45, 20, 11], [20, 17, 45], [20, 13, 9]]
Element with highest frequency:
20

Với chuỗi

Ở đây chúng tôi thực hiện một cách tiếp cận tương tự như cách trên. Nhưng chúng tôi sử dụng hàm chuỗi từ mô-đun itertools.

Ví dụ

from itertools import chain
def highest_freq(lst):
   SimpleList = list(chain.from_iterable(lst))
   return max( SimpleList, key= SimpleList.count)
# Given list
listA = [[45, 20, 11], [20, 17, 45], [20,13, 9]]
print("Given List:\n",listA)
print("Element with highest frequency:\n",highest_freq(listA))

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given List:
[[45, 20, 11], [20, 17, 45], [20, 13, 9]]
Element with highest frequency:
20

Với bộ đếm và chuỗi

Trong cách tiếp cận này, hàm đếm từ các bộ sưu tập giữ số lượng của phần tử được truy xuất bằng cách sử dụng hàm chuỗi từ itertools.

Ví dụ

from itertools import chain
from collections import Counter
def highest_freq(lst):
   SimpleList = chain.from_iterable(lst)
   return Counter(SimpleList).most_common(1)[0][0]
# Given list
listA = [[45, 20, 11], [20, 17, 45], [20,13, 9]]
print("Given List:\n",listA)
print("Element with highest frequency:\n",highest_freq(listA))

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given List:
[[45, 20, 11], [20, 17, 45], [20, 13, 9]]
Element with highest frequency:
20