Python 딕셔너리를 무작위 순서로 출력하는 방법
파이썬의 딕셔너리(dictionary)는 리스트나 문자열처럼 인덱스로 요소에 접근할 수 없기 때문에, 딕셔너리 자체를 직접 무작위로 섞는(shuffle) 것은 불가능합니다. 하지만 딕셔너리의 키(keys)는 리스트로 변환할 수 있고, 이 리스트에 random 모듈의 shuffle() 함수를 적용하면 순서를 무작위로 바꿀 수 있습니다. 이렇게 섞인 키 순서대로 반복하면서 각 키에 해당하는 값(value)을 함께 출력하면 됩니다.
예제 코드
>>> D1 = {"pen": 25, "pencil": 10, "book": 100, "sharpner": 5, "eraser": 5}
>>> import random
>>> l = list(D1.keys())
>>> l
['pen', 'pencil', 'book', 'sharpner', 'eraser']
>>> random.shuffle(l)
>>> l
['pencil', 'eraser', 'sharpner', 'book', 'pen']
>>> for k in l:
print(k, D1[k])실행 결과
pencil 10
eraser 5
sharpner 5
book 100
pen 25
동작 원리
list(D1.keys())— 딕셔너리의 모든 키를 새로운 리스트로 변환합니다.random.shuffle(l)— 리스트의 요소 순서를 제자리(in-place)에서 무작위로 섞습니다.for k in l루프 — 섞인 순서대로 각 키와 그에 대응하는 값을 출력합니다.
실행할 때마다 출력되는 순서는 달라집니다. 참고로 shuffle()은 원본 리스트 자체를 변경하므로, 원본을 유지하고 싶다면 random.sample(list(D1.keys()), len(D1))을 사용해 무작위 순서의 새로운 키 목록을 얻는 방법도 있습니다.