/ / Erreur de dictionnaire: «TypeError: l'objet 'str' ne prend pas en charge l'affectation d'élément» - python-3.x

Erreur de dictionnaire: «TypeError: l'objet 'str' ne prend pas en charge l'affectation d'élément» - python-3.x

J'essaie de créer un répertoire qui enregistre dans un fichier en python. voici l'extrait de code avec le problème:

import os

f = open("save")
forbidden = f.readline()
forbiddens = f.readline()
dictionary = f.readline()
stop = 0
global arguments
print("phonebook os by me")

def write():
global forbidden
global forbiddens
global dictionary
f = open("save")
f.write(forbidden and "n" and forbiddens and "n" and dictionary)
f.close()

def add_cc():
global forbidden
global dictionary
global arguments
name = arguments[1]
number = int(arguments[2])
if name in forbidden:
print("403: forbidden!")
elif name in dictionary:
print("406: Not acceptable! This item is already in the dictionary!")
else:
dictionary[name] = number
write()
start()

def del_cc():
global arguments
global dictionary
name = arguments[1]
del dictionary[name]
write()
start()

def get_cc():
global arguments
global forbidden
global dictionary
name = arguments[1]
if name in dictionary:
print(dictionary[name])
elif name in forbidden:
print("403: Forbidden!")
else:
print("404: Item not Found.")
start()

(le repos est trop long)

Le problème vient à dictionary[name] = number ligne 12. l'erreur que je reçois est

    dictionary[name] = number
TypeError: "str" object does not support item assignment

Est-ce que quelqu'un peut m'aider?

Réponses:

0 pour la réponse № 1

Oui je peux vous aider :) .

Vérifiez votre code pour l'affectation à dictionary. La variable dictionary Ce n'est pas un dictionnaire, mais une chaîne, donc quelque part dans votre code sera quelque chose comme:

dictionary = " evaluates to string "

ou l'équivalent.

Vous en connaissez déjà le message d’erreur ci-dessus, mais cela ne semble pas vous aider à savoir quoi faire pour éviter l’erreur. Alors voici comment vous devez changer votre code, de sorte que l'erreur soit partie:

import os

f = open("save")
forbidden = f.readline()
forbiddens = f.readline()

dictionary = {} # now it is a dictionary not a string "{}"