문제

왜 008 또는 009가 파이썬 딕의 열쇠를 가질 수 없지만 001-007은 괜찮습니까? 예시:

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

업데이트: 문제 해결됨. 나는 0으로 문자를 시작하면 10 대가되었음을 알지 못했습니다. 정말 이상해 보입니다. 왜 0?

도움이 되었습니까?

해결책

Python 및 기타 언어에서 0으로 숫자를 시작하면 숫자는 0-7만이 유효한 숫자 인 Octal (기본 8)으로 해석됩니다. 코드를 변경해야합니다.

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

또는 주요 0이 정말로 중요한 경우 키에 문자열을 사용하십시오.

다른 팁

Python은 008과 009를 Octal Number로 가져옵니다.

당신은 007까지 올라갈 수 있고 다음 숫자는 010 (8)과 011 (9)입니다. Python 통역사에서 시도해 보면 내가 의미하는 바를 볼 수 있습니다.

파이썬 (및 기타 많은 언어)에서 선두 "0" an을 나타냅니다 10 대 번호 (기본 8). 이 선도적 표기법을 사용하는 것을 an이라고합니다 문자 문자. 옥탈 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 10, 11 등으로 이동합니다. 08 (10 월)은 유효하지 않습니다.

주요 0을 제거하면 코드가 괜찮습니다.

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

@doxalogos가 옳습니다. 그들은 유효하지 않은 키가 아닙니다 - 그들은 유효하지 않은 리터럴입니다. 다른 컨텍스트에서 그것들을 사용하려고하면 동일한 오류가 발생합니다.

그것은 당신이 0, 그것은 8 월 번호로 해석됩니다. 부터 008 그리고 009 옥탈 숫자가 아니며 실패합니다.

0 쓸 필요가 없도록 8 월 번호보다 우선합니다. (127)₈. 로부터 Wikipedia 페이지: "때때로 옥탈 숫자는 0의 값이 0 인 값으로 표시됩니다 (예 : Python 2.X 또는 JavaScript 1.X- 이제는 모두 더 이상 사용되지 않음)."

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top