1) Counter
from collections import Counter
myList = [10,10,20,30,4,5,3,2,3,4,2,1,2,30]
print(Counter(myList))
# Counter({2: 3, 10: 2, 30: 2, 4: 2, 3: 2, 20: 1, 5: 1, 1: 1})
print(Counter(myList).items())
# dict_items([(10, 2), (20, 1), (30, 2), (4, 2), (5, 1), (3, 2), (2, 3), (1, 1)])
print(Counter(myList).keys())
# dict_keys([10, 20, 30, 4, 5, 3, 2, 1])
print(Counter(myList).values())
# dict_values([2, 1, 2, 2, 1, 2, 3, 1])
from collections import defaultdict
myList = [10,10,20,30,4,5,3,2,3,4,2,1,2,30]
print(Counter(myList))
# Counter({2: 3, 10: 2, 30: 2, 4: 2, 3: 2, 20: 1, 5: 1, 1: 1})
print(Counter(myList).items())
# dict_items([(10, 2), (20, 1), (30, 2), (4, 2), (5, 1), (3, 2), (2, 3), (1, 1)])
print(Counter(myList).keys())
# dict_keys([10, 20, 30, 4, 5, 3, 2, 1])
print(Counter(myList).values())
# dict_values([2, 1, 2, 2, 1, 2, 3, 1])
2) defaultdict
a)
d = defaultdict(list)
# Even if key not exists it defaults to list/int
d['python'].append("awesome")
d['others'].append("not relevant")
d['python'].append("language")
d['test']
for i in d.items():
print(i)
# O/P:
# ('python', ['awesome', 'language'])
# ('others', ['not relevant'])
# ('test', [])
b)
# Even if key not exists it defaults to list/int
d['python'].append("awesome")
d['others'].append("not relevant")
d['python'].append("language")
d['test']
for i in d.items():
print(i)
# O/P:
# ('python', ['awesome', 'language'])
# ('others', ['not relevant'])
# ('test', [])
b)
d = defaultdict(int)
d['without_val']
d['with_val'] = 100
for i in d.items():
print(i)
# O/P:
# ('without_val', 0)
# ('with_val', 100)
d['without_val']
d['with_val'] = 100
for i in d.items():
print(i)
# O/P:
# ('without_val', 0)
# ('with_val', 100)
c)
demo = defaultdict(int)
print(demo[300]) # 0