파이썬, 리스트와 딕셔너리 자세하게

Yooil·2025년 4월 16일

Data&AI-Uni.

목록 보기
9/77
post-thumbnail

List & Dictionary

List

다차원리스트
1차원 리스트

list_one = [1, 2, 3, 4, 5]

2차원 리스트

list_two = [[10, 20], [30, 40], [50, 60]]
print(len(list_two))  # 출력: 3 (행의 개수)
print(list_two[1][0]) # 출력: 30 (2행 1열 요소)
print(list_two[0])    # 출력: [10, 20] (1행 전체)

3차원 리스트

list_three = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
print(len(list_three))       # 출력: 2 (depth의 개수)
print(list_three[1][0][1])    # 출력: 6 (2번째 depth, 1행, 2열 요소)

리스트 함수

min(list) & max(list
리스트 내의 최솟값과 최댓값을 반환

sum(리스트): 리스트 내의 숫자 요소들의 합을 반환

enumerate(리스트): 리스트의 각 요소에 순서(인덱스)를 부여, (인덱스, 요소) 형태의 튜플로 반환

zip(iterable): 여러 개의 순회 가능한 객체를 병렬로 묶어 각 요소들을 튜플 형태로 묶은 이터레이터를 반환


dictionary

딕셔너리 함수

setdefault(key, value)
딕셔너리에 key가 없으면 value를 할당하고 value를 반환.
이미 key가 있다면 기존의 값을 반환하며 딕셔너리는 변경되지 않습니다.

my_dict = {'apple': 1, 'banana': 2}
result1 = my_dict.setdefault('cherry', 3)
print(my_dict)   # 출력: {'apple': 1, 'banana': 2, 'cherry': 3}
print(result1)  # 출력: 3

result2 = my_dict.setdefault('banana', 5)
print(my_dict)   # 출력: {'apple': 1, 'banana': 2, 'cherry': 3} (기존 값 유지)
print(result2)  # 출력: 2

update(iterable)
다른 딕셔너리나 키-값 쌍의 이터러블을 사용하여 딕셔너리를 업데이트
기존 키가 있으면 값이 갱신되고, 없는 키면 새로운 키-값 쌍이 추가

dict1 = {'a': 10, 'b': 20}
dict2 = {'b': 30, 'c': 40}
dict1.update(dict2)
print(dict1)  # 출력: {'a': 10, 'b': 30, 'c': 40}

dict1.update([('d', 50), ('e', 60)])
print(dict1)  # 출력: {'a': 10, 'b': 30, 'c': 40, 'd': 50, 'e': 60}

pop(key[, default])
딕셔너리에서 지정된 key에 해당하는 값을 삭제하고 반환
key가 없으면 default 값이 주어졌을 경우 그 값을 반환하고, 그렇지 않으면 KeyError가 발생

my_dict = {'apple': 1, 'banana': 2, 'cherry': 3}
popped_value = my_dict.pop('banana')
print(my_dict)      # 출력: {'apple': 1, 'cherry': 3}
print(popped_value) # 출력: 2

# my_dict.pop('grape') # KeyError 발생
safe_pop = my_dict.pop('grape', 0)
print(safe_pop)     # 출력: 0

컴프리헨션

컴프리헨션은 리스트, 셋, 딕셔너리를 간결하게 생성하는 방법
반복문과 조건문을 사용해 새로운 컬렉션을 정의한다.

리스트 컴프리헨션: [표현식 for 변수 in 이터러블 if 조건] 형태

# 0부터 9까지의 짝수 리스트 생성 (반복문)
even_numbers_for = []
for i in range(10):
    if i % 2 == 0:
        even_numbers_for.append(i)
print(even_numbers_for)  # 출력: [0, 2, 4, 6, 8]

# 리스트 컴프리헨션
even_numbers_comp = [x for x in range(10) if x % 2 == 0]
print(even_numbers_comp) # 출력: [0, 2, 4, 6, 8]

# 중첩된 for문과 if문
sweet = ['딸기', '바나나']
savory = ['치즈', '감자']
combined_for = []
for s in sweet:
    for v in savory:
        combined_for.append([s, v])
print(combined_for) # 출력: [['딸기', '치즈'], ['딸기', '감자'], ['바나나', '치즈'], ['바나나', '감자']]

combined_comp = [[s, v] for s in sweet for v in savory]
print(combined_comp) # 출력: [['딸기', '치즈'], ['딸기', '감자'], ['바나나', '치즈'], ['바나나', '감자']]

셋 컴프리헨션: {표현식 for 변수 in 이터러블 if 조건} 형태

squares_set = {x**2 for x in range(10)}
print(squares_set)  # 출력: {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}

딕셔너리 컴프리헨션: {키표현식: 값표현식 for 변수 in 이터러블 if 조건} 형태

numbers = [1, 2, 3]
names = ['one', 'two', 'three']
number_dict = {n: name for n, name in zip(numbers, names)}
print(number_dict)  # 출력: {1: 'one', 2: 'two', 3: 'three'}

even_number_map = {x: x*2 for x in range(10) if x % 2 == 0}
print(even_number_map) # 출력: {0: 0, 2: 4, 4: 8, 6: 12, 8: 16}

0개의 댓글