English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 Python 딕셔너리 이해와 예제를 통해 그 사용법을 배웁니다.
딕셔너리는 데이터를 저장할 수 있는 Python의 데이터 타입으로,키/값 쌍에서예를 들어:
my_dict = {1: 'apple', 2: 'ball'}
그에 대한更多信息를 알고 싶다면 다음을 방문하세요:Python 딕셔너리
딕셔너리 이해는 딕셔너리를 생성하는 간결하고 정교한 방법입니다.
다음 코드를 고려해 보세요:
square_dict = dict() for num in range(1, 11) : square_dict[num] = num*num print(square_dict)
이제, 딕셔너리 이해 함수를 사용하여 위 프로그램에서 딕셔너리를 생성해 보겠습니다.
# 딕셔너리 이해 예제 square_dict = {num: num*num for num in range(1, 11)} print(square_dict)
두 프로그램의 출력은 같을 것입니다.
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}
이 두 프로그램에서 모두 square_dict를 생성했습니다.숫자 제곱 키/값 쌍의 딕셔너리
하지만, 딕셔너리 이해를 사용하면 우리는一行로생성딕셔너리.
위의 예제에서, 딕셔너리 이해는 특정 패턴으로 작성되어야 합니다.
딕셔너리 이해의 가장 간단한 문법은:
dictionary = {key: value for vars in iterable}
이제 이 문법을 이전 예제의 딕셔너리 이해와 비교해 보겠습니다.
이제, 딕셔너리 이해를 사용하는 방법을 보겠습니다.
#item price in dollars old_price = {'milk': 1.02, 'coffee': 2.5, 'bread': 2.5} dollar_to_pound = 0.76 new_price = {item: value*dollar_to_pound for (item, value) in old_price.items()} print(new_price)
출력 결과
{'milk': 0.7752, 'coffee': 1.9, 'bread': 1.9}
여기서, 우리는 달러 단위로 상품 가격을 검색하여 파운드 단위로 변환할 수 있습니다. 딕셔너리 이해를 사용하면 이 작업이 더 간단하고 짧습니다.
조건을 추가하여 딕셔너리 이해를 더욱 정의할 수 있습니다. 예를 들어 보겠습니다.
original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33} even_dict = {k: v for (k, v) in original_dict.items() if v % 2 == 0} print(even_dict)
출력 결과
{'jack': 38, 'michael': 48}
그러면, if字典 이해의 문장으로 인해 오직 짝수 값을 가진 항목만 추가되었습니다.
original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33} new_dict = {k: v for (k, v) in original_dict.items() if v % 2 != 0 if v < 40} print(new_dict)
출력 결과
{'john': 33}
이 경우, 오직 홀수 값이40의 항목이 새로운 딕셔너리에 추가되었습니다.
이유는 if字典 이해에서 여러 문장이 있기 때문입니다. 그들은 and로等效되어 두 조건을 모두 만족해야 합니다.
original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33} new_dict_1 = {k: ('old' if v > 40 else 'young') for (k, v) in original_dict.items()} print(new_dict_1)
출력 결과
{'jack': 'young', 'michael': 'old', 'guido': 'old', 'john': 'young'}
이 경우, 새 딕셔너리를 생성하기 위해 서브 딕셔너리 이해를 사용합니다.
가격이 크게等于40의 상품의 값은 'old'이고, 다른 상품의 값은 'young'입니다.
딕셔너리 이해를 딕셔너리 이해에 추가하여 내장 딕셔너리를 만들 수 있습니다. 예를 들어 보겠습니다.
dictionary = { k1: {k2: k1 * k2 for k2 in range(1, 6)} for k1 in range(2, 5) } print(dictionary)
출력 결과
{2: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10}, 3: {1: 3, 2: 6, 3: 9, 4: 12, 5: 15}, 4: {1: 4, 2: 8, 3: 12, 4: 16, 5: 20}}
그리고如您이看到的 것처럼, 우리는 내장 딕셔너리에서 곱셈 테이블을 만들어 사용합니다.2까지4의 숫자.
내장 딕셔너리 이해를 사용할 때마다 파이썬은 먼저 외부 루프에서 시작하고 그 다음 내부 루프로 이동합니다.
따라서, 위의 코드는 다음과 동일합니다:
dictionary = dict() for k1 in range(11, 16) : dictionary[k1] = {k2: k1*k2 for k2 in range(1, 6)} print(dictionary)
이를 추가로 확장할 수 있습니다:
dictionary = dict() for k1 in range(11, 16) : dictionary[k1] = dict() for k2 in range(1, 6) : dictionary[k1][k2] = k1*k2 print(dictionary)
이 세 가지 프로그램은 모두 동일한 출력을 제공합니다.
그리고 우리가 보았듯이, 딕셔너리 이해는 딕셔너리 초기화 과정을 크게 단축합니다. 이는 코드에 파이썬 스타일을 더합니다.
우리의 코드에서 딕셔너리 이해를 사용하면 코드 행을 줄이면서도 논리를 유지할 수 있습니다.
딕셔너리 이해는 코드를 쉽게 읽을 수 있는 우아한 코드를 작성하는 데 매우 유용하지만, 항상 올바른 선택이 아닙니다.
이를 사용하여:
때로는 코드의 실행 속도를 느리게 하고 더 많은 메모리를 소비할 수 있습니다.
이는 코드의 가독성을 저하시킬 수 있습니다.
코드를 단一行으로 만들기 위해 어려운 로직이나 많은 딕셔너리 이해를 추가하려는 것은 절대 아니어야 합니다. 이러한 경우, 예를 들어 루프와 같은 다른 대체 방법을 선택하는 것이 좋습니다.