ได้ลิสต์ที่สมาชิกเป็น Tuple นับจำนวนครั้งที่แต่ละ Tuple ปรากฏ
วิธี 1: ใช้ collections.defaultdict(int)
import collections
Alist = [[('Mon','Wed')], [('Mon',)], [('Tue',)], [('Mon','Wed')]]
counter = collections.defaultdict(int)
for elem in Alist:
counter[elem[0]] += 1
print(dict(counter)) # {('Mon', 'Wed'): 2, ('Mon',): 1, ('Tue',): 1}
วิธี 2: ใช้ Counter + chain (แนะนำ)
from collections import Counter
from itertools import chain
Alist = [[('Mon','Wed')], [('Mon',)], [('Tue',)], [('Mon','Wed')]]
counter = Counter(chain(*Alist))
print(counter) # Counter({('Mon', 'Wed'): 2, ('Mon',): 1, ('Tue',): 1})
สรุป
Counter(chain(*Alist)) รวม Flatten และ Count ในขั้นตอนเดียว โค้ดกระชับ เร็ว