Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาองค์ประกอบทั่วไปในรายการ 2 มิติใน Python


รายการ 2D มีรายการเป็นองค์ประกอบ กล่าวอีกนัยหนึ่งก็คือรายการของรายการ ในบทความนี้ เราจะต้องค้นหาองค์ประกอบที่พบได้บ่อยที่สุดในบรรดารายการทั้งหมดที่อยู่ในรายการ

ด้วยค่าสูงสุดและจำนวน

เราออกแบบการติดตามโดยมีเงื่อนไขเพื่อตรวจสอบการมีอยู่ขององค์ประกอบในรายการย่อยที่กำหนด จากนั้นเราใช้ฟังก์ชัน max ร่วมกับฟังก์ชันการนับเพื่อให้ได้องค์ประกอบที่มีความถี่สูงสุด

ตัวอย่าง

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))

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

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

มีโซ่

ที่นี่เราใช้แนวทางที่คล้ายกันกับวิธีข้างต้น แต่เราใช้ฟังก์ชันลูกโซ่จาก itertools โมดูล

ตัวอย่าง

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))

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

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

มีเคาน์เตอร์และโซ่

ในแนวทางนี้ ฟังก์ชันตัวนับจากคอลเล็กชันจะรักษาการนับองค์ประกอบที่ดึงข้อมูลโดยใช้ฟังก์ชันลูกโซ่จาก itertools

ตัวอย่าง

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))

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

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