웹사이트 검색

Python 3의 사전 이해


소개

사전은 Python의 내장 매핑 유형입니다. 사전은 키를 값에 매핑하고 이러한 키-값 쌍은 Python에 데이터를 저장하는 유용한 방법을 제공합니다.

일반적으로 ID 또는 사용자 프로필에 포함된 정보와 같이 관련된 데이터를 보유하는 데 사용되는 사전은 { } 양쪽에 중괄호로 구성됩니다.

정보: 이 자습서의 예제 코드를 따라하려면 python3 명령을 실행하여 로컬 시스템에서 Python 대화형 셸을 엽니다. 그런 다음 >>> 프롬프트 뒤에 추가하여 예제를 복사, 붙여넣기 또는 편집할 수 있습니다.

사전은 다음과 같습니다.

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}

중괄호 외에도 사전 전체에 콜론(:)이 있습니다.

콜론 왼쪽에 있는 단어가 키입니다. 키는 불변 데이터 유형으로 구성될 수 있습니다. 위 사전의 키는 다음과 같습니다.

  • 사용자 이름
  • 온라인
  • 팔로워

위의 예에서 각 키는 문자열 값입니다.

콜론 오른쪽에 있는 단어는 값입니다. 값은 모든 데이터 유형으로 구성될 수 있습니다. 위 사전의 값은 다음과 같습니다.

  • 새미 상어
  • <코드>987

이러한 각 값은 문자열, 정수입니다.

sammy 사전을 출력해 봅시다:

print(sammy)
Output
{'username': 'sammy-shark', 'followers': 987, 'online': True}

출력을 보면 키-값 쌍의 순서가 변경되었을 수 있습니다. Python 버전 3.5 및 이전 버전에서 사전 데이터 유형은 순서가 지정되지 않습니다. 그러나 Python 버전 3.6 이상에서는 사전 데이터 유형이 순서대로 유지됩니다. 사전이 주문되었는지 여부에 관계없이 키-값 쌍은 그대로 유지되어 관계 의미를 기반으로 데이터에 액세스할 수 있습니다.

전제 조건

컴퓨터나 서버에 Python 3가 설치되어 있고 프로그래밍 환경이 설정되어 있어야 합니다. 프로그래밍 환경이 설정되지 않은 경우 운영 체제(Ubuntu, CentOS, Debian 등)에 적합한 서버의 프로그래밍 환경에 대한 설치 및 설정 가이드를 참조할 수 있습니다.

사전 요소 액세스

관련 키를 참조하여 사전의 값을 호출할 수 있습니다.

키를 사용하여 데이터 항목 액세스

사전은 데이터 저장을 위한 키-값 쌍을 제공하므로 Python 프로그램에서 중요한 요소가 될 수 있습니다.

Sammy의 사용자 이름을 분리하려면 sammy[사용자 이름]을 호출하면 됩니다. 출력해 봅시다:

print(sammy['username'])
Output
sammy-shark

사전은 목록과 같이 특정 인덱스 값을 얻기 위해 정수를 호출하는 대신 키에 값을 할당하고 관련 값을 얻기 위해 해당 키를 호출할 수 있다는 점에서 데이터베이스처럼 작동합니다.

username 키를 호출하여 sammy-shark라는 키 값을 받습니다.

sammy 사전의 나머지 값은 동일한 형식을 사용하여 유사하게 호출할 수 있습니다.

sammy['followers']
# Returns 987

sammy['online']
# Returns True

사전의 키-값 쌍을 사용하여 키를 참조하여 값을 검색할 수 있습니다.

메서드를 사용하여 요소에 액세스

키를 사용하여 값에 액세스하는 것 외에도 몇 가지 기본 제공 메서드를 사용할 수 있습니다.

  • dict.keys()는 키를 분리합니다
  • dict.values()는 값을 분리합니다
  • dict.items()(키, 값) 튜플 쌍의 목록 형식으로 항목을 반환합니다

키를 반환하려면 dict.keys() 메서드를 사용합니다. 이 예에서는 변수 이름을 사용하고 sammy.keys()가 됩니다. print() 메서드에 전달하고 출력을 살펴보겠습니다.

print(sammy.keys())
Output
dict_keys(['followers', 'username', 'online'])

우리는 dict_keys 클래스의 반복 가능한 보기 개체 내에 키를 배치하는 출력을 받습니다. 그러면 키가 목록 형식으로 인쇄됩니다.

이 메서드는 사전에서 쿼리하는 데 사용할 수 있습니다. 예를 들어 두 사전 데이터 구조 간에 공유되는 공통 키를 살펴볼 수 있습니다.

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}
jesse = {'username': 'JOctopus', 'online': False, 'points': 723}

for common_key in sammy.keys() & jesse.keys():
    print(sammy[common_key], jesse[common_key])

sammy 사전과 jesse 사전은 각각 사용자 프로필 사전입니다.

그러나 Sammy는 연결된 팔로워가 있는 소셜 프로필을 가지고 있고 Jesse는 연결된 포인트가 있는 게임 프로필을 가지고 있기 때문에 프로필에는 다른 키가 있습니다. 공통적으로 가지고 있는 2개의 키는 사용자 이름온라인 상태이며 이 작은 프로그램을 실행할 때 찾을 수 있습니다.

Output
sammy-shark JOctopus True False

출력을 더 쉽게 읽을 수 있도록 프로그램을 확실히 개선할 수 있지만 이는 dict.keys()를 사용하여 다양한 사전에서 공통적으로 공유하는 내용을 확인하는 데 사용할 수 있음을 보여줍니다. 이것은 큰 사전에 특히 유용합니다.

마찬가지로 dict.values() 메서드를 사용하여 sammy 사전의 값을 쿼리할 수 있습니다. 이 사전은 sammy.values(). 출력해 봅시다:

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}

print(sammy.values())
Output
dict_values([True, 'sammy-shark', 987])

keys()values() 메서드는 sammy 사전에 있는 키와 값의 정렬되지 않은 목록을 <의 뷰 객체와 함께 반환합니다.dict_keys 및 dict_values.

사전의 모든 항목에 관심이 있는 경우 items() 메서드를 사용하여 액세스할 수 있습니다.

print(sammy.items())
Output
dict_items([('online', True), ('username', 'sammy-shark'), ('followers', 987)])

이것의 반환된 형식은 dict_items 보기 객체와 (키, 값) 튜플 쌍으로 구성된 목록입니다.

for 루프를 사용하여 반환된 목록 형식을 반복할 수 있습니다. 예를 들어 주어진 사전의 각 키와 값을 출력한 다음 문자열을 추가하여 사람이 더 읽기 쉽게 만들 수 있습니다.

for key, value in sammy.items():
    print(key, 'is the key for the value', value)
Output
online is the key for the value True followers is the key for the value 987 username is the key for the value sammy-shark

위의 for 루프는 sammy 사전 내의 항목을 반복하고 사람이 쉽게 이해할 수 있도록 정보와 함께 키와 값을 한 줄씩 인쇄했습니다.

기본 제공 메서드를 사용하여 사전 데이터 구조에서 항목, 값 및 키에 액세스할 수 있습니다.

사전 수정

사전은 변경 가능한 데이터 구조이므로 수정할 수 있습니다. 이 섹션에서는 사전 요소를 추가하고 삭제하는 방법을 살펴보겠습니다.

사전 요소 추가 및 변경

메서드나 함수를 사용하지 않고 다음 구문을 사용하여 사전에 키-값 쌍을 추가할 수 있습니다.

dict[key] = value

usernames라는 사전에 키-값 쌍을 추가하여 이것이 실제로 어떻게 작동하는지 살펴보겠습니다.

usernames = {'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}

usernames['Drew'] = 'squidly'

print(usernames)
Output
{'Drew': 'squidly', 'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}

이제 사전이 Drew: squidly 키-값 쌍으로 업데이트되었음을 알 수 있습니다. 사전은 순서가 지정되지 않을 수 있으므로 이 쌍은 사전 출력의 모든 위치에서 발생할 수 있습니다. 나중에 프로그램 파일에서 usernames 사전을 사용하면 추가 키-값 쌍이 포함됩니다.

또한 이 구문은 키에 할당된 값을 수정하는 데 사용할 수 있습니다. 이 경우 기존 키를 참조하고 다른 값을 전달합니다.

주어진 네트워크의 사용자 중 하나인 사전 drew를 생각해 봅시다. 우리는 이 사용자가 오늘 팔로워가 급증했다고 말할 것이므로 팔로워 키에 전달된 정수 값을 업데이트해야 합니다. print() 함수를 사용하여 사전이 수정되었는지 확인합니다.

drew = {'username': 'squidly', 'online': True, 'followers': 305}

drew['followers'] = 342

print(drew)
Output
{'username': 'squidly', 'followers': 342, 'online': True}

출력에서 팔로워 수가 305의 정수 값에서 342로 점프한 것을 볼 수 있습니다.

이 방법을 사용하여 사용자 입력으로 사전에 키-값 쌍을 추가할 수 있습니다. 명령줄에서 실행되고 사용자 입력을 통해 더 많은 이름과 관련 사용자 이름을 추가할 수 있는 빠른 프로그램 usernames.py를 작성해 보겠습니다.

# Define original dictionary
usernames = {'Sammy': 'sammy-shark', 'Jamie': 'mantisshrimp54'}

# Set up while loop to iterate
while True:

    # Request user to enter a name
    print('Enter a name:')

    # Assign to name variable
    name = input()

    # Check whether name is in the dictionary and print feedback
    if name in usernames:
        print(usernames[name] + ' is the username of ' + name)

    # If the name is not in the dictionary...
    else:

        # Provide feedback        
        print('I don\'t have ' + name + '\'s username, what is it?')

        # Take in a new username for the associated name
        username = input()

        # Assign username value to name key
        usernames[name] = username

        # Print feedback that the data was updated
        print('Data updated.')

명령줄에서 프로그램을 실행해 보겠습니다.

  1. python usernames.py

프로그램을 실행하면 다음과 같은 결과가 나타납니다.

Output
Enter a name: Sammy sammy-shark is the username of Sammy Enter a name: Jesse I don't have Jesse's username, what is it? JOctopus Data updated. Enter a name:

프로그램 테스트가 끝나면 CTRL + C를 눌러 프로그램을 빠져나갈 수 있습니다. 코드를 개선하기 위해 조건문과 함께 프로그램을 종료하도록 트리거를 설정할 수 있습니다(예: 문자 q 입력).

사전을 대화식으로 수정하는 방법을 보여줍니다. 이 특정 프로그램을 사용하면 CTRL + C로 프로그램을 종료하는 즉시 파일 읽기 및 쓰기를 처리하는 방법을 구현하지 않는 한 모든 데이터를 잃게 됩니다.

dict.update() 메서드를 사용하여 사전을 추가하고 수정할 수도 있습니다. 이는 목록에서 사용할 수 있는 append() 메서드와 다릅니다.

아래의 jesse 사전에서 followers 키를 추가하고 jesse.update()를 사용하여 정수 값을 지정해 보겠습니다. 그런 다음 업데이트된 사전을 print()합시다.

jesse = {'username': 'JOctopus', 'online': False, 'points': 723}

jesse.update({'followers': 481})

print(jesse)
Output
{'followers': 481, 'username': 'JOctopus', 'points': 723, 'online': False}

출력에서 followers: 481 키-값 쌍을 사전 jesse에 성공적으로 추가했음을 알 수 있습니다.

또한 dict.update() 메서드를 사용하여 특정 키에 대해 주어진 값을 대체하여 기존 키-값 쌍을 수정할 수 있습니다.

sammy 사전에서 Sammy의 온라인 상태를 True에서 False로 변경해 보겠습니다.

sammy = {'username': 'sammy-shark', 'online': True, 'followers': 987}

sammy.update({'online': False})

print(sammy)
Output
{'username': 'sammy-shark', 'followers': 987, 'online': False}

sammy.update({online: False}) 줄은 기존 키 online을 참조하고 부울 값을 True에서 False로 수정합니다. . 사전을 print()로 호출하면 출력에서 업데이트가 일어나는 것을 볼 수 있습니다.

항목을 사전에 추가하거나 값을 수정하려면 dict[key] = value 구문이나 dict.update() 메서드를 사용할 수 있습니다.

사전 요소 삭제

키-값 쌍을 추가하고 사전 데이터 유형 내에서 값을 변경할 수 있는 것처럼 사전 내에서 항목을 삭제할 수도 있습니다.

사전에서 키-값 쌍을 제거하려면 다음 구문을 사용합니다.

del dict[key]

사용자 중 하나를 나타내는 jesse 사전을 살펴보겠습니다. Jesse가 더 이상 게임 플레이를 위해 온라인 플랫폼을 사용하지 않는다고 말하겠습니다. 따라서 포인트 키와 관련된 항목을 제거하겠습니다. 그런 다음 항목이 삭제되었는지 확인하기 위해 사전을 인쇄합니다.

jesse = {'username': 'JOctopus', 'online': False, 'points': 723, 'followers': 481}

del jesse['points']

print(jesse)
Output
{'online': False, 'username': 'JOctopus', 'followers': 481}

del jesse[points] 행은 jesse 사전에서 키-값 쌍 points: 723을 제거합니다.

모든 값의 사전을 지우려면 dict.clear() 메서드를 사용하면 됩니다. 나중에 프로그램에서 사용해야 하는 경우를 대비하여 주어진 사전을 유지하지만 더 이상 항목을 포함하지 않습니다.

jesse 사전 내의 모든 항목을 제거해 보겠습니다.

jesse = {'username': 'JOctopus', 'online': False, 'points': 723, 'followers': 481}

jesse.clear()

print(jesse)
Output
{}

결과는 이제 키-값 쌍이 없는 빈 사전이 있음을 보여줍니다.

특정 사전이 더 이상 필요하지 않으면 del을 사용하여 완전히 제거할 수 있습니다.

del jesse

print(jesse)

jesse 사전을 삭제한 후 print()를 호출하면 다음 오류가 발생합니다.

Output
... NameError: name 'jesse' is not defined

사전은 변경 가능한 데이터 유형이므로 추가, 수정, 항목 제거 및 지울 수 있습니다.

결론

이 자습서에서는 Python의 사전 데이터 구조를 살펴보았습니다. 사전은 키-값 쌍으로 구성되며 인덱싱에 의존하지 않고 데이터를 저장하는 방법을 제공합니다. 이를 통해 다른 데이터 유형과의 의미 및 관계를 기반으로 값을 검색할 수 있습니다.

여기에서 "데이터 유형 이해\ 자습서에서 다른 데이터 유형에 대해 자세히 알아볼 수 있습니다.

Scrapy로 웹 스크래핑과 같은 프로그래밍 프로젝트에서 사용되는 사전 데이터 유형을 볼 수 있습니다.