J'essaie d'ajouter une valeur entrée par l'utilisateur à lister dans un dictionnaire, mais il affiche une erreur:
AttributeError: "str 'objet n'a pas d'attribut" APPEND " P> blockQuote>
Quelqu'un peut-il découvrir l'erreur? p>
Dict = {} # an empty dictionary to be filled later Dict["SomeKey"] = [] Dict["SomeKey"] = input ("Enter a value: ") # it works Dict["SomeKey"].append(input("Enter another value: ")) # This part gives me error !!!
4 Réponses :
Vous voudrez peut-être l'utiliser comme si: car la fonction entrée code> renvoie une chaîne qui signifie
dict ["quelqu'un"] Code> est également une chaîne qui n'a pas la fonction
append code>. p> p>
Mais cela supprimera les premières données d'entrée ... Je dois ajouter les données nouvellement entrées à la précédente!
Édité pour expliquer.
Cette trace Retour vous aidera à résoudre votre problème.
>>> 'append' in dir(str) False >>> 'append' in dir(list) True
J'ai écrit le code suivant et ça fonctionne bien tant que vous l'avez déjà aussi longtemps que vous avez déjà "quelqu'un" dans le dictionnaire et vous entrez dans les entrées utilisateur dans des guillemets doubles.
Dict = {} Dict["SomeKey"] = [] Dict["SomeKey"].append(input("Enter another value:")) Dict["SomeKey"].append(input("Enter another value:")) print Dict O/P sankalp- î° ~/Documents î° python p.py î² â î² 2027 î² 00:59:30 Enter another value:"SomeValue1" Enter another value:"Somevalue2" {'SomeKey': ['SomeValue1', 'Somevalue2']}
de la partie précédente de votre exemple vous définissez Disons que vous avez dactylographié dans "FOO" pour l'entrée à l'étape 3 de votre exemple, alors dict ["quelqu'un"] code> à une chaîne. P>
dict ["" "]. Ajoutez (" autre_string ") code> (J'ai utilisé" autre_string "comme Le résultat de ce que vous avez peut-être saisi pour l'entrée). Ensuite, cela devient "foo" .append ("autre_string). Mais" foo ", une chaîne, n'a pas de
.append () code> méthode. P>
C'est une chaîne pour vous ... (
entrée code> retourne une chaîne)