Modul collections

from collections import ChainMap, Counter, defaultdict, OrderedDict, deque

# ChainMap

a = {'a': 'A', 'c': 'C'}
b = {'b': 'B', 'c': 'D'}

m = ChainMap(a, b)
for k, v in m.items():
    print('{} = {}'.format(k, v))

m['z'] = 'Z'
m['a'] = 'AA'
print(m)
print('---')

# Counter

users = 'root', 'anton', 'root', 'berta'
c1 = Counter(users)
print(c1)
c1.update(users)
print(c1)

c2 = Counter(('root', 'anton', 'caesar'))

print('C1:', c1)
print('C2:', c2)
print('C1 + C2:', c1 + c2)
print('C1 - C2:', c1 - c2)
print('C1 & C2:', c1 & c2)
print('C1 | C2:', c1 | c2)
print('---')

# defaultdict

dd = defaultdict(int)
for nkz in users:
    dd[nkz] += 1
print(dd)

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
    d[k].append(v)
print(sorted(d.items()))
print('---')

# OrderedDict

#d = OrderedDict.fromkeys('abcde')
d = OrderedDict((('a', 1), ('b', 2), ('c', 2), ('d', 4)))
print(d)
d.move_to_end('b')
print(d)
print(''.join(d.keys()))
# acdeb

# b an den Anfang schieben
d.move_to_end('b', last = False)
print(d)
print(''.join(d.keys()))
# bacde
print('---')

# deque

d = deque(range(10)) ; print('Normal          :', d)
d.rotate(2)          ; print('Right rotation 2:', d)
d.rotate(-3)         ; print('Left rotation  3:', d)