2017-05-09 1 views
0

Dans mon code j'essaye de coder quelque chose comme une table de hachage et je travaille sur la partie où vous ajoutez des nombres à la table quelqu'un peut-il m'aider? Mon code ici:Essayer de remplacer un nombre d'un dictionnaire (python)

num = input("Number you want to insert:") 
table = {"1":0, "2":0, "3":0 } 
print(table) 
def insert(table): 
    find_key = int(num) % len(table) 
     # Linear probing? 
    for i in range(len(table)):    
     if i == find_key: 
      dict[i] = int(num) 
      print(table) 
    print(i) 
    return i 
print(table) 
insert(table)     

L'erreur est TypeError: objet 'type' ne supporte pas l'attribution de l'article

+0

Qu'espériez-vous que 'dict [i] = int (num)' atteindrait? 'dict' est un type. Vous essayez de lui attribuer, ce qui ne fonctionnera pas. Les 'dict's sont déjà des tables de hachage, il n'est donc pas clair quel est votre but. –

+0

'dict [i] = ...' devrait être 'table [i] = ...'. A côté de cela, au lieu d'utiliser des index (0, 1, 2, ..) pour accéder aux objets, vous devez utiliser les touches ("1", "2", "3") (Itérer un dictionnaire donnera des clés)! – falsetru

+0

Dictionnaires * ARE * hashtables. Si vous essayez d'en implémenter un vous-même, je vous recommande d'utiliser * lists * à la place si vous voulez implémenter vous-même une hashtable – snb

Répondre

1

Il y a une faute de frappe: dict[...] = ... devrait être table[...] = ...


Vous n'avez pas besoin implémenter la table de hachage Les dictionnaires Python sont des hashtables.

L'assignation simple à un dictionnaire ajoutera (ou remplacera s'il y a la clef donnée) l'élément à lui.

def insert(table, num): 
    table[num] = int(num) # not dict[...] = ... 

num = input("Number you want to insert:") 
table = {"1":0, "2":0, "3":0 } 
print(table) # before insert 
insert(table, num) 
print(table) # after insert