peds   6년 전

알파벳 개수 문제를 풀다가 질문이 생겼습니다.

처음에 이 문제를 보자마자 dictionary를 사용하면 금방 풀겠다싶어

아래와 같이 코드를 짰는데 다른데선 잘만 돌아가는데 여기선 틀렸다고 뜨네요..

코드를 보면 알겠지만 빈 딕셔너리에 루프를 돌려 a부터 z까지의 키값과 0을 집어넣은 후

각 키에 대응하는 문자가 발견될 때마다 하나씩 값을 증가시키고 join을 사용해 값을 출력하는 프로그램입니다.

(사실 너무 쉬워 설명이 필요있을까 싶지만, 어쨌든 문제는 이렇게 풀고 틀렸다는거죠)

하다하다 안되서 리스트를 사용해서 풀었기 때문에 그냥 넘어갈까 하다가 그동안 고민한게 아까운 것도 있고

당연히 맞았다고 생각한걸 두 세번 연속으로 틀렸다고 뜨니 열받기도 해서 이렇게 질문을 남겨봅니다.


occidere   6년 전

파이썬의 딕셔너리의 경우 순서를 유지하지 않습니다. 

즉, abcd... 순서로 입력하셨어도 내부적으로 조정되어 위치가 변경될 수 있습니다.


자바의 해시맵과 유사하다고 보시면 될 듯 합니다.

jh05013   6년 전

사전에 넣은 순서를 유지하려면 from collections import OrderedDict를 하고 그것을 사용하면 됩니다.

peds   6년 전

occidere jh05013 감사합니다.

jh05013   6년 전

나중에 어쩌다가 이 글을 보실 분들을 위해 추가합니다.

파이썬 3.6부터는 CPython의 dict가 넣은 순서를 유지하며, 곧 나올 3.7부터는 모든 파이썬의 dict가 넣은 순서를 유지합니다.

댓글을 작성하려면 로그인해야 합니다.