
import itertools

class Registre:

    def __init__(self, pob, an):
        self.poblacio = pob
        self.any_naix = an
        self.__naix = {}

    def inscriure(self, data, nom):
        if data.year != self.any_naix:
            raise ValueError("Any equivocat")
        if data in self.__naix:
            self.__naix[data].append(nom)
        else:
            self.__naix[data] = [nom]

    def __getitem__(self, data):
        if data in self.__naix:
            return self.__naix[data]
        else:
            return []

    def __len__(self):
        return len(self.__naix)

    def __iter__(self):
        return iter(self.__naix)

    def iter_noms(self):
        it1 = itertools.chain.from_iterable(self.__naix.values())
        return iter(sorted(set(it1)))
