# -*- coding: utf-8 -*-
def invert(d, flat=False):
new_dict = d.copy()
new_dict.clear()
for key, value in d.items():
if flat:
new_dict.setdefault(value, key)
else:
new_dict.setdefault(value, []).append(key)
return new_dict