Dans un grand dictionnaire, similaire à Comment puis-je supprimer rapidement le "Four" dans les listes? p> est Il y a un moyen de relier les quatre dans les listes? Comme dans, éliminant l'un élimine les autres. P> p> Edit h3>
5 Réponses :
Itérate sur les valeurs du dictionnaire et supprimez le 4 de chaque liste:
for a in d.itervalues():
a.discard(4)
Essayez ceci pour supprimer les 4s:
for i in d:
while 4 in d[i]:
d[i].remove(4)
Non seulement le code est incorrect, il s'agirait également d'une approche inefficace incroyablement redondante si elle était correcte. ( .ReMove () code> ne prend pas d'index; c'est .pop () code> qui fait cela. Mutant également une liste pendant que vous êtes une mauvaise idée. Enfin, dans code> sur une liste nécessite de l'itération de toute façon, en ajoutant une instruction Extra si code> pour vérifier si la valeur que vous souhaitez supprimer est dans la liste, n'est pas plus efficace, Cela fait que les choses prennent plus de temps.)
@Amber merci d'avoir souligné cela. S'est confondu par les choses. :( Qu'en est-il d'utiliser tandis que 4 en d [i] code>? Toute suggestion? Utiliser "In '" toujours pas trop efficace THO ..
@Louis_pig Une meilleure approche serait de mettre tandis que TRUE: D [i] .ReMove (4) code> à l'intérieur d'un essai / sauf (semblable à la réponse de Sven).
@ F.J Merci pour la réponse. Je comprends que la réponse de Sven est rapide et efficace. Je pensais utiliser une exception pour faire "Vérification de la condition" n'est pas une bonne pratique de programmation.
@Louis_PIG qui dépend de la langue, dans Python, il est parfaitement acceptable d'utiliser des exceptions pour quelque chose comme ça. Ce style de programmation est appelé EAFP , court pour "plus facile à demander pardon que l'autorisation ".
@ F.J Merci beaucoup de me faire savoir à ce sujet. Foncé!
Vous n'avez pas mentionné ce que vous voulez arriver s'il y a des doublons dans votre liste. La solution que j'ai écrite (itérer puis supprimer ..) ne gère pas les doublons.
>>> d = {'a':[1,2,3,4],'b':[1,2,3,4,5,6],'c':[1,2],'d':[1,4],'e':[1,4,4]}
>>> for l in d.values():
... if 4 in l: l.remove(4)
...
>>> d
{'a': [1, 2, 3], 'c': [1, 2], 'b': [1, 2, 3, 5, 6], 'e': [1, 4], 'd': [1]}
Si les valeurs contiennent des doublons de 4, vous pouvez utiliser quelque chose comme ceci:
>>> d
{'a': [1, 2, 3], 'c': [1, 2], 'b': [1, 2, 3, 5, 6], 'd': [1]}
Il semble que vous puissiez bénéficier de votre dictionnaire "symétrique", vous pouvez faire quelque chose comme ceci: et utilisez-le quelque chose comme ceci: P> >>> d = {'a': set([1, 2, 3, 4]),
'b': set([1, 2, 3, 4, 5, 6]),
'c': set([1, 2]),
'd': set([1, 4])}
>>> make_symmetric(d)
>>> d
{1: set(['a', 'c', 'b', 'd']),
2: set(['a', 'c', 'b']),
3: set(['a', 'b']),
4: set(['a', 'b', 'd']),
5: set(['b']),
6: set(['b']),
'a': set([1, 2, 3, 4]),
'b': set([1, 2, 3, 4, 5, 6]),
'c': set([1, 2]),
'd': set([1, 4])}
>>> remove(d, 4)
>>> d
{1: set(['a', 'c', 'b', 'd']),
2: set(['a', 'c', 'b']),
3: set(['a', 'b']),
5: set(['b']),
6: set(['b']),
'a': set([1, 2, 3]),
'b': set([1, 2, 3, 5, 6]),
'c': set([1, 2]),
'd': set([1])}
>>> add(d, 'd', 4)
>>> d
{1: set(['a', 'c', 'b', 'd']),
2: set(['a', 'c', 'b']),
3: set(['a', 'b']),
4: set(['d']),
5: set(['b']),
6: set(['b']),
'a': set([1, 2, 3]),
'b': set([1, 2, 3, 5, 6]),
'c': set([1, 2]),
'd': set([1, 4])}