Je suis en train de créer un graphique de nœuds comme un dictionnaire, mais je reçois des résultats inattendus:Pourquoi .clear() renvoie uniquement la dernière itération
Il est un nœud du graphe si ce mot dernière lettre est égale de la deuxième prénom lettre
Ma liste :
names = ["Mark", "Kelly", "Kurt", "Terk"]
Mon Code:
n = [ x.lower() for x in names ]
graph = {}
temp = []
for x in n:
temp.clear()
for y in n:
if(x[-1]==y[0] and not x==y):
temp.append(y)
graph[x] = temp
Résultat:
{'kurt': ['kelly', 'kurt'], 'terk': ['kelly', 'kurt'], 'kelly': ['kelly', 'kurt'], 'mark': ['kelly', 'kurt']}
Comportement attendu
{'kurt': ['terk'], 'terk': ['kelly', 'kurt'], 'kelly': [], 'mark': ['kelly', 'kurt']}
Qu'est-ce que je fais mal?
'graph [x] = temp' ne copie pas la' list'. Vous puis «effacer» et repeupler. Tous 'graph [x]' utilisent la même 'list' –
La duplication possible de [Changer un élément dans une liste change plusieurs listes ..?] (Http://stackoverflow.com/questions/18946728/changing-an-element -in-one-list-changes-multiple-lists) –