D’après une idée de Sébastien REB
def valeurAssociee(n): a = n // 10 b = n % 10 return a * b + a + b def ajout(dictionnaire, cle, valeur): if cle == valeur: dictionnaire[cle] = [] return dictionnaire for k, v in dictionnaire.items(): if k == cle: v.append(valeur) return dictionnaire for k, v in dictionnaire.items(): for i,item in enumerate(v): if item == cle: v[i] = {cle:[valeur]} return dictionnaire elif isinstance(item, dict): dictionnaire[k][i] = ajout(item, cle, valeur) return dictionnaire dictionnaire = {} for n in range(1, 100): ajout(dictionnaire,valeurAssociee(n),n) dictionnaire = dict(sorted(dictionnaire.items())) print(dictionnaire)