Bonjour
Je viens de remarquer que dans un dictionnaire en compréhension, on ne peut pas utiliser une variable définie dans un sous-dictionnaire dans le dictionnaire "parent".

Exemple: je crée un dictionnaire où chaque clé sera associée à un tuple de sa valeur
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
dd={k : tuple(range(k+1)) for k in range(1, 6)}
print(dd)		# {1: (0, 1), 2: (0, 1, 2), 3: (0, 1, 2, 3), 4: (0, 1, 2, 3, 4), 5: (0, 1, 2, 3, 4, 5)}
Jusque là, pas de problème.

Mais si je cherche à déplacer chaque tuple dans un sous-dictionnaire...
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
dd={k : {"data" : tuple(range(k+1)) for k in range(1, 6)}}
print(dd)
...là où je m'attendais à avoir {1: {"data" : (0, 1)}, 2: {"data" : (0, 1, 2)}, 3: {"data" : (0, 1, 2, 3)}, 4: {"data" : (0, 1, 2, 3, 4)}, 5: {"data" : (0, 1, 2, 3, 4, 5)}} j'ai eu un NameError: name 'k' is not defined.

Effectivement avec le recul c'est compréhensible. Le sous-dictionnaire étant probablement généré à part, la variable "k" ne remonte pas sur le parent. Mais sur le coup j'ai été un peu surpris.

PS : en fait, même pas besoin de sous-dictionnaire. Une simple superposition de cast suffit à reproduire le souci.
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
d1={k : tuple(range(k+1)) for k in range(1, 6)}			# ok
d2={k : tuple(tuple(range(k+1)) for k in range(1, 6))}		# Erreur
Si quelqu'un a un avis...