2010-04-09 5 views
1

Qu'est-ce que je fais de mal pour obtenir cette erreur?Python: nécessite plus d'une valeur pour décompresser

replacements = {} 
    replacements["**"] = ("<strong>", "</strong>") 
    replacements["__"] = ("<em>", "</em>") 
    replacements["--"] = ("<blink>", "</blink>") 
    replacements["=="] = ("<marquee>", "</marquee>") 
    replacements["@@"] = ("<code>", "</code>") 

    for delimiter, (open_tag, close_tag) in replacements: # error here 
     message = self.replaceFormatting(delimiter, message, open_tag, close_tag); 

L'erreur:

Traceback (most recent call last):
File "", line 1, in for doot, (a, b) in replacements: ValueError: need more than 1 value to unpack

Toutes les valeurs tuples ont deux valeurs. Droite?

Répondre

9

Il devrait être:

for delimiter, (open_tag, close_tag) in replacements.iteritems(): # or .items() in py3k 
+0

arg .. me battre pour elle – YuppieNetworking

+0

Ce qu'il a fait. Question générale cependant, pourquoi pas: .... pour delimiter en remplacement: open_tag, close_tag = remplacement [delimiter] .... – AlG

+0

@ qor721: déballage plus tôt est plus efficace et idiomatiques, je dirais – SilentGhost

2

Je pense que vous devez appeler .items() comme le troisième exemple dans this link

for delimiter, (open_tag, close_tag) in replacements.items(): # error here 
    message = self.replaceFormatting(delimiter, message, open_tag, close_tag) 
Questions connexes