From 08ac73ca21618f7cfc395997147ed2d0a0281e73 Mon Sep 17 00:00:00 2001 From: Antonio Sarosi Date: Thu, 19 Nov 2020 20:05:05 +0100 Subject: [PATCH] Arregla RuntimeError: dictionary changed size during iteration --- .../datastructures/digraphs/weightingfunction.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/algoritmia/datastructures/digraphs/weightingfunction.py b/src/algoritmia/datastructures/digraphs/weightingfunction.py index 2086ea4..e6e743f 100644 --- a/src/algoritmia/datastructures/digraphs/weightingfunction.py +++ b/src/algoritmia/datastructures/digraphs/weightingfunction.py @@ -11,11 +11,16 @@ class WeightingFunction(IMap, Callable): #[weighting self._map = self.createMap(data) self.symmetrical = symmetrical if symmetrical: + duplicates = set() for (u, v) in self._map.keys(): if (v, u) in self._map: if self._map[u, v] != self._map[v, u]: raise ValueError("{!r} is different from {!r}".format((u,v), (v,u))) - if v != u: del self._map[v, u] + if v != u and (u, v) not in duplicates: + duplicates.add((v, u)) + + for dup in duplicates: + self._map.pop(dup) def __contains__(self, key: "(T, T)") -> "bool": return key in self._map