def countit(fields, iter_of_iter, default=None):
 C = Counter()
 T = namedtuple('Thing', fields)
 get = default_iget(default=default, *fields)
 return Counter((T(*get(thing)) for thing in iter_of_iter))

def countit ( fields , iter_of_iter , default = None ) : C = Counter ( ) T = namedtuple ( 'Thing' , fields ) get = default_iget ( default = default , * fields ) return Counter ( ( T ( * get ( thing ) ) for thing in iter_of_iter ) )
note: robust to fields not being in i_of_i .