Renommer les clés du dictionnaire : une solution complète
Le dictionnaire Python est une structure de données polyvalente qui permet un stockage et une récupération efficaces des valeurs-clés paires. Cependant, certains scénarios peuvent nécessiter de renommer une clé sans en altérer la valeur ni perturber l'organisation du dictionnaire. Cette question répond à ce problème et propose une gamme de solutions adaptées à la fois aux dictionnaires réguliers et aux OrderedDicts.
Regular Dict
Pour un dictionnaire régulier, une approche simple consiste à utiliser le pop() pour supprimer l'ancienne clé et l'opérateur [] pour attribuer la valeur à la nouvelle clé :
<code class="python">mydict["k_new"] = mydict.pop("k_old")</code>
Cette opération déplace effectivement l'élément à la fin du dictionnaire sauf si k_new existe déjà, dans auquel cas il écrase la valeur en place.
OrderedDict
OrderedDict, introduit dans Python 3.7, préserve l'ordre d'insertion des paires clé-valeur. Pour renommer une clé tout en conservant l'ordre :
<code class="python">OrderedDict((k_new if k == k_old else k, v) for k, v in od.items())</code>
Cela réaffecte les valeurs aux nouvelles clés à l'aide d'une expression génératrice, garantissant ainsi que l'ordre est conservé.
Préserver l'ordre dans Python 3.7 Dict
Les dictionnaires Python 3.7 respectent nativement l'ordre d'insertion. Pour renommer une clé tout en préservant cet ordre :
<code class="python">d = {0:0, 1:1, 2:2, 3:3} {k: v for k, v in d.items() if k != k_old} | {k_new: d[k_old]}</code>
Modifier la clé elle-même
La question porte sur la modification de la clé elle-même. Cependant, comme les clés sont hachables et immuables en Python, la modification directe des clés n'est pas réalisable. Cependant, en réattribuant la valeur avec le nom de clé souhaité et en supprimant l'ancienne clé, le dictionnaire reste intact, "renommant" effectivement la clé sans la modifier directement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!