[Python]딕셔너리 문제풀기 - 혼.공.파
python 기초 공부를 다시 시작하면서,
혼.공.파
에 있는 마무리 문제를 풀면서 개념 정리 겸, 문제 풀이를 적어보려고 한다.
<문제.1>
# numbers 내부에 들어가는 숫자가 몇번 등장하는가?
numbers = [1,2,6,8,4,3,2,1,9,5,4,9,7,2,1,3,5,4,8,9,7,2,3]
counter = {}
# numbers 내부에 들어가는 숫자가 몇번 등장하는가?
numbers = [1,2,6,8,4,3,2,1,9,5,4,9,7,2,1,3,5,4,8,9,7,2,3]
counter = {}
문제를 보고 처음에 접근 방식을 아래와 같이 생각을 했다.👇
뽑은 numbers를 키로 / numbers안에 number가 있다면 count()함수로 센 갯수를 벨류로,
그리고 이미, number라는 키가 있다면 pass
과정1)
velue값으로 설정할 값을 먼저 출력해서 확인해보기로 했다.
for number in numbers:
print(numbers.count(number)) # velue값
<출력결과>
3
4
1
2
3
3
4
3
3
2
3
3
2
4
3
3
2
3
2
3
2
4
3
모든 요소(instant)의 갯수가 모두 출력되었다.
과정2)
key와 velue를 설정하고, print()로 출력해보기로 했다.
for number in numbers:
counter[number] = numbers.count(number)
print()
print(counter)
<출력결과>
{1: 3}
{1: 3, 2: 4}
{1: 3, 2: 4, 6: 1}
{1: 3, 2: 4, 6: 1, 8: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
for문 내에 print(counter)
를 실행했기 때문에 함수 한줄한줄 실행될 때마다, print() 함수가 실행된 것.
과정3)
이번에는 for()함수 내의 print()제외하고 실행해보자.
<출력결과>
{1: 3, 2: 4, 6: 1, 8: 2, 4: 3, 3: 3, 9: 3, 5: 2, 7: 2}
원하는 출력값이 나왔다.
즉, 중복된 키값이 있을 경우, 그 후에 나온 키와 velue 값에 뒤집어 씌어진다.
딕셔너리 중복 값 참조1
딕셔너리 중복 값 참조2 - stack over folw
딕셔너리 중복 값 참조3 - stack over folw
<문제.2>
# 각 리스트를 조합해 하나의 딕셔너리 만들기
key_list = ["name", "hp", "mp", "level"]
value_list = ["기사", 200, 30, 5]
character = {}
# 각 리스트를 조합해 하나의 딕셔너리 만들기
key_list = ["name", "hp", "mp", "level"]
value_list = ["기사", 200, 30, 5]
character = {}
문제를 보고 처음에 접근 방식을 아래와 같이 생각을 했다.👇
key_list 인덱스 한개씩 추출
value_list 인덱스 한개씩 추출
charcater[key_list] = value_list
과정1)
인덱스로 한개씩 추출 해보기로 했으니, for()을 통해서 출력해보기로 했다.
for i in key_list:
for j in value_list:
character[i] = j
print(character)
<출력결과>
{'name': 5, 'hp': 5, 'mp': 5, 'level': 5}
당연히, value값들이 value_lis의 가장 마지막 요소인 5로 덮어지게 되었다.
i의 value에 이미 j가 저장되면, 다음 인덱스로 넘어가게? 작성해보려고 하였으나, error 발생하였다.
과정2)
[ Hint ] 두 리스트의 길이가 동일하니, 길이를 사용한 반복문을 작성해보기.
(필요한 인덱스에 직접 접근 가능)
for i in range(len(key_list)):
character[key_list[i]] = value_list[i]
print(character)
Author And Source
이 문제에 관하여([Python]딕셔너리 문제풀기 - 혼.공.파), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dldbwls492/딕셔너리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)