0
votes

Erreur de syntaxe renvoyée par le dictionnaire Python, impossible d'identifier l'erreur

J'ai créé plusieurs dict et j'obtiens maintenant une erreur de syntaxe pour le dernier dictionnaire. J'ai parcouru le dict mais je ne parviens pas à trouver l'erreur. J'ai 10 autres dict qui suivent un format similaire mais qui n'ont montré aucune erreur lors de l'impression.

Voici le dict dans la classe: 'c_equipment'

PS C:\Users\3com\Python> python test.py

File "test.py", line 28
"Hempen Rope":50,
             ^
SyntaxError: invalid syntax

C'est l'erreur initiale:

PS C:\Users\3com\Python> python test.py

File "test.py", line 5
"Greataxe",
          ^
 SyntaxError: invalid syntax

J'ai essayé de commenter la ligne mais une erreur s'est toujours affichée plus bas.

    c_Equipment = {
    1:
    {
        "Chain mail":"While wearing armour you have a disadvantage on Dexterity (Stealth) checks",
        "Greataxe",
        "Javelins":3,
        "Backpack", 
        "Blanket", 
        "Tinderbox", 
        "Rations": 2, 
        "Waterskin"
    },

    2:
    {
        "Chain mail",
        "Shield",
        'Warhammer',
        'Holy Symbol',
        'Backpack',
        'Crowbar',
        'Hammer',
        "Pistons":10,
        "Torches":10, 
        "Tinderbox", 
        "Ration":10, 
        'Waterskin',
        "Hempen Rope": 50, 
        "Masons Tools",
        "Dagger",
        "Playing Cards",
        "Common Clothes",
        "Pouch",
        "Rank-Insignia-(Sergeant)"
    }
    }

I n'a pu imprimer le dict qu'en commentant la plupart des lignes. Je pense que l'erreur pourrait être liée aux clés qui ont un nombre comme valeur. Mais je n'ai pas rencontré de problème avec d'autres dictionnaires avec le même format


0 commentaires

3 Réponses :


1
votes

Vous avez une erreur de syntaxe dans votre dictionnaire:

"Greataxe",
"Javelins":3,

Il n'y a pas de valeur pour la clé "Greataxe". Chaque entrée d'un dictionnaire doit être une paire clé: valeur , et chacune est ensuite séparée par une virgule. Vous devez donc faire correspondre chacune de ces paires clé: valeur.

Dans votre deuxième partie (avec la clé 2 ), vous avez également de nombreuses valeurs manquantes.


0 commentaires

3
votes

Votre syntaxe n'est pas légale; un dict se compose de paires clé: valeur . Beaucoup de vos entrées données n'en ont qu'une. Peut-être voulez-vous quelque chose comme

c_Equipment = {
1:
{
    "Chain mail":"While wearing armour you have a disadvantage on Dexterity (Stealth) checks",
    "Greataxe": 1,
    "Javelins":3,
    "Backpack": 1, 
    "Blanket": 1, 
    "Tinderbox": 1, 
    "Rations": 2, 
    "Waterskin": 1
},

Oui, vous devez le faire pour chaque élément dict.


0 commentaires

1
votes

Les dictionnaires doivent toujours avoir à la fois des clés et des valeurs. Dans votre cas, il y a de nombreux membres qui n'ont que des clés et aucune valeur correspondante.

D'un autre côté, les accolades avec seulement des clés sont appelées set, et sont un objet différent en python.


0 commentaires