Domanda

Perché è che non posso avere 008 o 009 chiavi per essere un dict Python, ma 001-007 vanno bene? Esempio:

some_dict = {
    001: "spam",
    002: "eggs",
    003: "foo",
    004: "bar",
    008: "anything", # Throws a SyntaxError
    009: "nothing"   # Throws a SyntaxError
    }

Aggiorna : Problema risolto. Non ero a conoscenza che a partire un letterale con uno zero ha reso ottale. Che sembra davvero strano. Perché a zero?

È stato utile?

Soluzione

in Python e altri linguaggi, se si avvia un numero con uno 0, il numero viene interpretato come essere in ottale (base 8), dove solo 0-7 sono cifre valide. Dovrete modificare il codice per questo:

some_dict = { 
    1: "spam",
    2: "eggs",
    3: "foo",
    4: "bar",
    8: "anything",
    9: "nothing" }

O se gli zeri iniziali sono molto importanti, usare le stringhe per le chiavi.

Altri suggerimenti

Python prende 008 e 009 come numeri ottali, quindi ... non validi.

Si può solo salire a 007, quindi il numero successivo sarebbe 010 (8) poi 011 (9). Provatelo in un interprete Python, e vedrete cosa intendo.

In Python (e molte altre lingue), iniziando un numero con uno "0" indica un numero ottale (base 8). L'utilizzo di questo leader zero notazione è chiamato un ottale letterale . numeri ottali vanno 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, ecc Quindi 08 (in ottale) non è valido .

Se si rimuove gli zeri iniziali, il codice andrà bene:

some_dict = 
{ 
    1: "spam",
    2: "eggs",
    3: "foo",
    4: "bar",
    8: "anything",
    9: "nothing" 
}

@DoxaLogos è giusto. Non è che sono le chiavi non valide - sono letterali non validi. Se si è tentato di utilizzarli in qualsiasi altro contesto, si otterrebbe lo stesso errore.

Questo perché, quando si avvia un numero con una 0, viene interpretato come un numero ottale. Dal momento che 008 e 009 non sono numeri ottali, non riesce.

Un 0 precede un numero ottale in modo che non si deve scrivere (127)₈. Dal Wikipedia pagina : "numeri ottali A volte sono rappresentati da un valore precedente con uno 0 (per esempio in 2.x Python o 1.x JavaScript - anche se ora è deprecato in entrambi). "

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top