J'ai de la difficulté à ajouter un dictionnaire, je ne sais vraiment pas comment l'utiliser, car chaque fois que j'essaie d'exécuter mon code, son dit "l'objet 'str' n'a pas d'attribut 'append'" ... J'ai quelque chose comme ça...

oscars= {
'Best movie': ['The shape of water','Lady Bird','Dunkirk'],
'Best actress':['Meryl Streep','Frances McDormand'],
'Best actor': ['Gary Oldman','Denzel Washington']
}

Je veux donc créer une nouvelle catégorie, puis je veux faire un cycle où l'utilisateur peut entrer autant de candidats qu'il le souhaite ...

   newcategory=input("Enter new category: ")
   nominees=input("Enter a nominee: ")
   oscars[newcategory]=nominees
   addnewnominees= str(input("Do you want to enter more nominees: (yes/no):"))
   while addnewnominees!= "No":
       nominees=input("Enter new nominee: ")
       oscars[newcategory].append(nominees)
       addnewnominees= str(input("Do you want to enter more nominees: (yes/no):"))

Quelqu'un sait comment utiliser l'append dans les dictionnaires?

1
Diego Mencos 16 avril 2018 à 05:03

3 réponses

Meilleure réponse

Vous ne pouvez pas ajouter à une chaîne. Créez d'abord une liste afin de pouvoir l'ajouter ultérieurement:

oscars[newcategory] = [nominees]
3
jpp 16 avril 2018 à 02:05
newcategory=input("Enter new category: ")
nominees=input("Enter a nominee: ")
oscars[newcategory]= list()  
oscars[newcategory].append(nominees)
addnewnominees= str(input("Do you want to enter more nominees: (yes/no):"))
while addnewnominees!= "No":
    nominees=input("Enter new nominee: ")
    oscars[newcategory].append(nominees)
    addnewnominees= str(input("Do you want to enter more nominees: (yes/no):"))

Explication:

Lorsque l'entrée est passée en tant que stdin, l'entrée est toujours un string. Donc, à la ligne oscars[newcategory].append(nominees), il renvoie une erreur car l'interprète ne sait pas que newcategory est une liste, donc nous devons d'abord la définir comme liste par

oscars[newcategory]= list() 

Et puis nous pouvons ajouter les nominés comme le souhaitent de nombreux utilisateurs.

1
kvmahesh 18 avril 2018 à 17:14

Comme cela a été mentionné, si vous créez la valeur d'une clé sous forme de chaîne, vous ne pouvez pas utiliser append dessus, mais vous pouvez le faire si vous faites de la valeur de la clé une liste. Voici une façon de procéder:

newcategory=input("Enter new category: ")
oscars[newcategory]=[]
addnewnominees = 'yes'
while addnewnominees.lower() != "no":
    nominees=input("Enter new nominee: ")
    oscars[newcategory].append(nominees)
    addnewnominees = str(input("Do you want to enter more nominees: (yes/no):"))
1
sacuL 16 avril 2018 à 02:33