Pourquoi j'obtiens ce message d'erreur lors de la tentative de modifier un dictionnaire: "TypeError: unhashable type: "tranche"
Je suis en train de construire une fonction qui reçoit en entrée une chaîne de caractères et un nombre k, et retourne un dictionnaire dont les clés sont la chaîne de caractères de longueur k de la chaîne d'origine et la valeur de chaque touche est une séquence d'indices au cours de laquelle la chaîne est apparu.
Exemple :
<<< hash_sequence("byebyeboy",3 (
{ 'yeb': [1, 4], 'boy': [6], 'bye': [0, 3], 'ebo': [5], 'eby':
[2] }
C'est mon code:
def hash_sequence(string, k):
dictionary={}
for i in range(len(string)):
dictionary[i:i+3]=[i]
if dictionary[i:i+3] in dictionary:
dictionary[i:i+3]+=[1]
return dictionary
- qu'attendez-vous
dictionary[i:i+3]=[i]
faire? - pour ajouter le numéro d'index pour les valeurs de clé, je suppose que c'est mon erreur, comment puis-je mettre à jour les valeurs de clé alors?
Vous devez vous connecter pour publier un commentaire.
Oh, je vois ce que vous essayez de faire de la tranche de la chaîne. Mauvaise syntaxe pour que.
Devrait être
De même
if dictionary[i:i+3] in dictionary:
devientif string[i:i+3] in dictionary:
et ainsi de suite sur la ligne suivante.Honnêtement la façon dont vous êtes en train de faire cela rend le code beaucoup de confusion. Les choses sont plus claires si vous utilisez
setdefault
(et corriger quelques bugs d'autres):