A. 딕셔너리
- 리스트가 '인덱스'를 기반으로 값을 저장하는 것이라면,
- 딕셔너리는 '키(Key)'를 기반으로 값을 저장하는 것이다.
- 대괄호[ ]를 입력하고 내부에 인덱스처럼 키를 입력한다.
- 참조할 때 리스트와 딕셔너리 차이
리스트 | list_a = [] | list_a[1] |
딕셔너리 | dict_a = {} | dict_a["key"] |
- 모든 연속형 자료형의 중추는 리스트, 딕셔너리는 편집 가능한 리스트다.
in 키워드
딕셔너리 내부에 키가 있는지 없는지 확인한다.
dictionary = {
"name": "야채",
"age": 24,
"character": "활달함",
"nation": "한국"
}
#입력
key = input("접근하려는 키: ")
if key in dictionary:
print(dictionary[key])
else:
print("존재하지 않는 키에 접근하고 있다.")
접근하려는 키: 야채
>> 존재하지 않는 키에 접근하고 있다.
get() 함수
dictionary = {
"name": "야채",
"age": 24,
"character": ["활달함", "호기심 많음"],
"nation": "한국"
}
#입력
value = dictionary.get("name")
print("값:", value)
value2 = dictionary.get("health age")
print("값:", value2)
#None 확인 방법
if value or value2 == None:
print("존재하지 않는 키에 접근했었습니다.")
값: 야채
값: None
존재하지 않는 키에 접근했었습니다.
값 추가 / 제거
- dictionary['새로운 키"] = 새로운 값
- del dictionary["이름"]
B. 딕셔너리 실습 오답노트
1. 자릿수를 구하는 방법
numbers = [123, 45, 63, 234, 352,123]
#My Answer
for number in numbers:
if 100<= number<1000:
print("{}는 3자릿수입니다.".format(number))
elif 10<=number< 100:
print("{}는 2자릿수입니다.".format(number))
elif 0<number< 10:
print("{}는 1자릿수입니다.".format(number))
else:
pass
#Teacher's
for number in numbers:
print("{}는 {}자릿수입니다.".format(number, len(str(number))))
2. 짝수 번째 요소를 제곱
#My Answer
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(0, len(numbers) // 2):
#My Answer : j = i+(i+1)
#Teacher's
j = i * 2 + 1
print(f"i = {i}, j={j}")
numbers[j] = numbers[j] **2
print(numbers)
C. 반복문
range() 범위
1. 숫자를 한 개 넣는 방법
- range(n)
- 0부터 n-1까지의 정수로 범위
2. 숫자를 두 개 넣는 방법
- range(n1, n2)
- n1부터 n2-1까지의 정수로 범위
3. 숫자를 두 개 넣는 방법
- range(n1, n2 , n3)
- n1부터 n2-1까지의 정수로 범위를 만드는데, 간격이 n3
for i in range(4, 0-1, -1): #4부터, 마지막까지, -1에서 증감한 값 0
print("현재 반복 변수: {}".format(i))
reversed()
- 함수와 반복문을 조합할 때는 함수의 결과를 여러 번 사용하지 않고 for 구문 내부에 reversed() 함수를 곧바로 넣어서 사용한다.
for i in reversed(range(5)):
print("현재 반복 변수: {}".format(i))
현재 반복 변수: 4
현재 반복 변수: 3
현재 반복 변수: 2
현재 반복 변수: 1
현재 반복 변수: 0
enumerate()
- 함수와 반복문 조합하기
- for와 in 사이에 반복 변수를 두개 넣어서
- index와 value를 각각 가져올 수 있다.
exapme_list = ["요소A", "요소B", "요소C"]
print("# enumerate() 함수 적용")
print(enumerate(exapme_list))
print()
print("# list() 함수로 강제 변환 출력")
print(list(enumerate(exapme_list)))
print()
print("# 반복문과 조합하기")
for i, value in enumerate(exapme_list): #반복설계구문
print("{}번째 요소는 {}입니다.".format(i, value))
# enumerate() 함수 적용
<enumerate object at 0x000002569F183880>
# list() 함수로 강제 변환 출력
[(0, '요소A'), (1, '요소B'), (2, '요소C')]
# 반복문과 조합하기
0번째 요소는 요소A입니다.
1번째 요소는 요소B입니다.
2번째 요소는 요소C입니다.
튜플
- (0, '요소A') 같은 것들
- 수정 불가능한 리스트
- 같은 요소여도 메모리가 적다.
itmes()
example_dictionary = {
"키A": "값A",
"키B": "값B",
"키C": "값C",
}
print("#딕셔너리의 items() 함수")
print("items():", example_dictionary.items())
print()
print("#딕셔너리의 items() 함수와 반복문 조합하기")
for key, element in example_dictionary.items():
print("dictionary[{}] = {}".format(key, element))
#딕셔너리의 items() 함수
items(): dict_items([('키A', '값A'), ('키B', '값B'), ('키C', '값C')])
#딕셔너리의 items() 함수와 반복문 조합하기
dictionary[키A] = 값A
dictionary[키B] = 값B
dictionary[키C] = 값C
리스트 내포
- 리스트 이름= [표현식 for 반복자 in 반복할 수 있는 것]
- 리스트 이름 = [ 표현식 for 반복자 in 반복할 수 있는 것 if 조건문]
array = [i * i for i in range(0, 20, 2)]
print(array)
[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
array = ["사과", "자두", "초콜릿", "바나나", "체리"]
output = [fruit for fruit in array if fruit != "초콜릿"]
print(output)
['사과', '자두', '바나나', '체리']
이터레이터
- 이터러블: 반복할 수 있는 것
- 이터레이터: next() 함수를 적용해 하나하나 꺼낼 수 있는 요소
- 필요한 요소만 꺼내 쓰기 때문에 메모리의 효율성을 높인다.
for 반복자 in 반복할 수 있는 것
- reversed() 함수의 리턴값이 이터레이터
numbers = [1, 2, 3, 4, 5, 6]
r_num = reversed(numbers)
print("reversed_numbers:", r_num)
print(next(r_num))
print(next(r_num))
print(next(r_num))
print(next(r_num))
print(next(r_num))
6
5
4
3
2
기타
min(): 리스트 내부에서 최솟값을 찾는다.
max(): 리스트 내부에서 최댓값을 찾는다.
sum(): 리스트 내부에서 값을 모두 더한다.
'Python' 카테고리의 다른 글
Day6. 객체지향 프로그래밍 (0) | 2024.01.16 |
---|---|
Day5. 함수 (1) | 2024.01.08 |
Day3. 조건문과 리스트 (2) | 2024.01.04 |
Day2. 변수와 함수, 연산자 (1) | 2024.01.03 |
Day1. 자료형 (1) | 2024.01.02 |