주어진 범위 안의 숫자를 {x: x²} 형태로 저장하는 딕셔너리를 만들어야 하는 경우가 자주 있습니다. 이럴 때는 사용자로부터 입력값을 받고, 간단한 for 반복문만 활용하면 손쉽게 구현할 수 있습니다.
예제 코드
다음은 1부터 입력받은 숫자 n까지 각 숫자를 키(key)로, 그 제곱을 값(value)으로 갖는 딕셔너리를 생성하는 예제입니다.
my_num = int(input("숫자를 입력하세요.. "))
my_dict = dict()
for elem in range(1, my_num + 1):
my_dict[elem] = elem * elem
print("생성된 딕셔너리의 요소는 다음과 같습니다 : ")
print(my_dict)실행 결과
숫자를 입력하세요.. 7
생성된 딕셔너리의 요소는 다음과 같습니다 :
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49}코드 설명
input()함수로 사용자에게 숫자를 입력받고,int()로 정수형으로 변환합니다.dict()를 호출하여 빈 딕셔너리를 생성합니다.range(1, my_num + 1)을 사용해 1부터 입력값까지 차례대로 반복합니다. 끝값이 범위에 포함되도록+1을 해주는 점에 유의하세요.- 반복 과정에서 각 숫자(elem)를 키로, 그 제곱(
elem * elem)을 값으로 딕셔너리에 저장합니다. - 완성된 딕셔너리를 콘솔에 출력합니다.
더 파이썬다운 방법: 딕셔너리 컴프리헨션
같은 결과를 한 줄로 더 간결하게 작성할 수도 있습니다. 파이썬에서는 딕셔너리 컴프리헨션(dictionary comprehension)을 활용하는 것이 관용적인(idiomatic) 방식으로 꼽힙니다.
n = int(input("숫자를 입력하세요.. "))
square_dict = {x: x * x for x in range(1, n + 1)}
print(square_dict)이 방식은 코드가 짧아질 뿐만 아니라 가독성이 뛰어나고, 내부적으로 최적화되어 있어 일반적으로 더 빠르게 동작합니다. 간단한 반복 로직이라면 딕셔너리 컴프리헨션 사용을 추천합니다.