2010-05-16 8 views
0

Pour certains projets, je dois faire un dictionnaire dans lequel les clés sont urls, parmi lesquels je l'adresse suivante:problème avec la clé de dictionnaire Python

http://www.microsoft.com/isapi/redir.dll?prd=windows&sbp=mediaplayer&ar=Media&sba=Guide&pver=6.2

l'URL est trop longue pour être ici Je suppose en une seule ligne. Je peux construire un dictionnaire sans aucune erreur cette url est aussi une clé. mais pour une raison quelconque, quand je veux extraire les valeurs associées à cette clé (url). Je ne peux pas, je reçois et erreur "clé d'erreur: ...." Quelqu'un sait quel est le problème avec cette URL? Les clés du dictionnaire sont-elles sensibles à certaines choses? grâce

ci-dessous est le code:

def initialize_sumWTP_table(cursor): 
cursor.execute(''' SELECT url,tagsCount 
        FROM sumWTP''') 
rows = cursor.fetchall() 
for url,tagsCount in rows: 
    sumWTP[url] = tagsCount 
+0

Je parie que cela n'a rien à voir avec l'URL - montrez-nous votre code. –

+0

oui, je l'ai réparé, il y a un? marque. – Hossein

+0

gotcha, tout va bien maintenant. (Il serait toujours utile de voir le code si) –

Répondre

1

Le problème était un bug dans mon code. J'ai ajouté une gestion d'exception pour résoudre le problème. Les données étaient correctes, mais j'ai oublié de faire la gestion des exceptions dans ces cas. exemple:

def getWPT(url,tag): 
try: 
    row = MemoryInitializer.wtp[url][tag] 
except KeyError: 
    row = 0 
#print row 
return row 
0

La raison pour obtenir une erreur de clé lors de l'accès à dict est que la clé n'existe pas. Vérifiez que la clé que vous pensez existe et que vous utilisez la chaîne correcte.

+0

je l'ai vérifié, je peux le voir là ... quand j'imprime le dictionnaire entier je peux le voir. – Hossein

+0

Ne le dites pas simplement, prouvez-le. –

+0

Je cours le code et je peux voir les clés et les valeurs parmi lesquelles est cette URL, mais si je veux y accéder seul en utilisant la clé, je ne peux pas, d'autres URL fonctionnent bien. – Hossein

0

Il est difficile de dire en fonction du fragment de code offert. Il semble que vous initialisiez le dictionnaire. Vous devez d'abord créer le dictionnaire sumWTP, quelque chose comme: sumWTP = {}. Ensuite, les instructions telles que sumWTP [url] = tagcount doivent fonctionner.

1

Il est presque inconcevable que le dictionnaire "perd" votre clé. Je suppose qu'il y a un petit changement dans la chaîne (cas, ou comment la chaîne de requête est ordonnée) qui se traduit par la même URL efficace, mais avec une chaîne légèrement différente.

Si c'est le cas, trouvez un moyen de "normaliser" l'URL.

Questions connexes