dictionnaire de l'erreur de clé de python
Je reçois le message d'erreur "Erreur de Clé: 'tempMax'".
Si quelqu'un peut dire quel est le problème avec le code suivant:
def catagorise(self, day, cat, f):
self.features.setdefault(cat, {f:{'high':0,'mid':0,'low':0}})
if f == 'tempMean':
if day.tempMean > 15.0:
self.features[cat][f]['high'] += 1
elif day.tempMean > 8.0 and day.tempMean < 15.0:
self.features[cat][f]['mid'] += 1
elif day.tempMean <= 8.0:
self.features[cat][f]['low'] += 1
if f == 'tempMax':
if day.tempMax > 15.0:
self.features[cat][f]['high'] += 1
elif day.tempMax > 8.0 and day.tempMax < 15.0:
self.features[cat][f]['mid'] += 1
elif day.tempMax <= 8.0:
self.features[cat][f]['low'] += 1
Un jour est un objet qui a des variables telles que la température moyenne, température max etc. Cat est la catégorie à laquelle il sera mis en ligne.g 'Brouillard', 'Pluie', 'Neige', 'None' et f est la fonction pour vérifier par exemple 'tempMax'
Les caractéristiques dictionnaire est défini lorsque la classe est créée.
et le reste de la traçabilité en amont?
Le reste de la traçabilité en amont serait gâcher le riddle
Le reste de la traçabilité en amont serait gâcher le riddle
OriginalL'auteur sam | 2011-03-23
Vous devez vous connecter pour publier un commentaire.
La question est dans le setdefault appel.
f est définie sur tempMax mais tempMax a jamais été initialisé.
Dans ce cas, il doit être initialisé comme un dictionnaire, parce que vous avez "haute" comme l'un des principaux
Si vous venez d'un php arrière-plan, alors c'est une erreur commune. En python, vous devez les initialiser vos dictionnaires. Ils doivent être initialisés à chaque niveau imbriqué.
Commune de la façon de le faire est...
OriginalL'auteur eat_a_lemon
dict.setdefault()
définit uniquement la clé une fois. Si vous passer'tempMean'
une fois, puis vous n'obtiendrez pas une chance de réglertempMax
.OriginalL'auteur Ignacio Vazquez-Abrams
La première ligne de votre méthode
jeux de
self.features[cat]
à la valeur donnée que si elle n'est pas déjà fait, et ne fait rien sinon. Dans ce dernier cas, il peut arriver (et évidemment le cas) que le dictionnaireself.features[cat]
n'a pas la cléf
, donc essayer d'accéder àself.features[cat][f]
de soulever unKeyError
.OriginalL'auteur Sven Marnach