ภาพรวม
นับจำนวนครั้งที่ tuple ปรากฏใน list ของ list โดยใช้ collections.defaultdict
ตัวอย่างโค้ด
import collections
my_list = [[('Hello', 'Hey')], [('Jane', 'Will')], [('William', 'John')], [('Hello', 'Hey')], [('z', 'q')]]
print("รายการต้นฉบับ:")
print(my_list)
my_result = collections.defaultdict(int)
for elem in my_list:
# elem เป็น list ที่มี tuple เดียว ใช้ elem[0] เข้าถึง tuple
my_result[elem[0]] += 1
print("ผลลัพธ์:")
print(dict(my_result))ผลลัพธ์
รายการต้นฉบับ:
[[('Hello', 'Hey')], [('Jane', 'Will')], [('William', 'John')], [('Hello', 'Hey')], [('z', 'q')]]
ผลลัพธ์:
{('Hello', 'Hey'): 2, ('Jane', 'Will'): 1, ('William', 'John'): 1, ('z', 'q'): 1}คำอธิบาย
defaultdict(int)สร้าง dictionary ที่ค่าเริ่มต้นเป็น 0- วนลูปผ่านแต่ละ sublist ใช้ tuple แรกเป็น key นับจำนวน
- Tuple ใช้เป็น key ได้เพราะ immutable
รูปแบบข้อมูลที่แตกต่าง
ถ้าข้อมูลเป็น list of tuples โดยตรง (ไม่ได้อยู่ใน sublist):
my_list = [('Hello', 'Hey'), ('Jane', 'Will'), ('Hello', 'Hey')]
my_result = collections.Counter(my_list) # ใช้ Counter สะดวกกว่า
print(my_result) # Counter({('Hello', 'Hey'): 2, ('Jane', 'Will'): 1})