2-2. 파이썬 딕셔너리(Dict) – 구문과 예제

파이썬의 딕셔너리란 무엇인가?

파이썬의 딕셔너리는 “키” – “값”을 쌍으로 갖는 정렬되지 않고 변경 가능한 데이터 값의 모음.
딕셔너리의 각 키-값의 쌍은 키를 연관된 값에 매핑하여 최적화 합니다.

파이썬의 딕셔너리는 중괄호({})를 사용하여 키와 값의 쌍을 쉼표로 구분된 리스트형식으로 선언 합니다.

  • 키는 단일 요소가 됩니다.
  • 값은 목록이나 목록 내의 목록, 숫자 등일 수 있습니다.

딕셔너리 구문

Dict = { ' Tim': 18,  xyz,.. }

사전은 중괄호({})로 나열되어 있으며, 이 중괄호 안에 키와 값이 선언됩니다. 각 키는 콜론(:)으로 값과 구분되고, 쉼표는 각 요소를 구분합니다.

딕셔너리 “키(key)”의 속성

사전 키를 사용할 때 중요한 점은 두 가지입니다.

  • 키당 두 개 이상의 항목은 허용되지 않습니다(중복 키는 허용되지 않습니다)
  • 딕셔너리의 값은 어떤 유형이든 될 수 있지만 키는 숫자, 튜플과 같이 변경 불가능해야 합니다.
  • 딕셔너리 키는 대소문자를 구분합니다. 키 이름은 같지만 대소문자가 다르면 파이썬의 딕셔너리에서는 다른 키로 처리됩니다.

예제

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
print((Dict['Tiffany']))





###  결과 : 
22
  • 코드에서 우리는 딕셔너리 이름 “Dict”를 가지고 있습니다
  • 우리는 딕셔너리에 그 사람의 이름과 나이를 선언했습니다. 여기서 이름은 “Keys”이고 나이는 “value”입니다.
  • 이제 코드를 실행하세요
  • 사전에서 Tiffany의 나이를 검색합니다.

파이썬 딕셔너리 사용법

복사

전체 딕셔너리를 새 딕셔너리로 복사할 수도 있습니다.
예를 들어, 여기서 우리는 원래 딕셔너리를 새 사전 이름인 “Boys”와 “Girls”로 복사했습니다.

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
studentX=Boys.copy()
studentY=Girls.copy()
print(studentX)
print(studentY)
  • 우리는 소년과 소녀의 이름과 나이가 함께 적힌 원래 사전(Dict)을 가지고 있습니다.
  • 하지만 우리는 소년 목록을 소녀 목록과 분리하고 싶어서 소년과 소녀 요소를 “Boys”와 “Girls”라는 별도의 사전 이름으로 정의했습니다.
  • 이제 우리는 다시 “studentX”와 “studentY”라는 새로운 사전 이름을 생성했습니다.
    여기서 모든 소년 딕셔너리의 키와 값은 studentX에 복사되고 소녀 사전은 studentY에 복사됩니다.
  • 따라서 이제 누가 남자이고 누가 여자인지 확인하기 위해 주요 사전(Dict)의 전체 목록을 살펴볼 필요가 없습니다.
    남자 목록을 원하면 studentX를 인쇄하고 여자 목록을 원하면 studentY를 인쇄하기만 하면 됩니다.
  • 따라서 studentX 및 studentY 사전을 실행하면 사전에 있는 “boys” 및 “girls” 요소를 개별적으로 제공합니다.

딕셔너리의 “업데이트”

또한 기존 항목에 새 항목이나 키-값 쌍을 추가하거나 기존 항목을 삭제하여 딕셔너리를 업데이트할 수도 있습니다.
이 예에서 우리는 기존 딕셔너리에 다른 이름인 “Sarah”를 추가할 것입니다.

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
Dict.update({"Sarah":9})
print(Dict)
  • 우리의 기존 딕셔너리 “Dict”에는 “Sarah”라는 이름이 없습니다.
  • Dict.update 메서드를 사용하여 Sarah를 기존 딕셔너리에 추가합니다.
  • 이제 코드를 실행하면 Sarah가 기존 딕셔너리에 추가됩니다.

딕셔너리 “키” 삭제

파이썬 딕셔너리는 목록에서 모든 요소를 ​​삭제할 수 있는 자유를 제공합니다.
목록에 Charlie라는 이름이 없는 것을 원한다고 가정하면 다음 코드로 키 요소를 제거할 수 있습니다.

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
del Dict ['Charlie']
print(Dict)




###  결과 : 
{'Tim': 18, 'Tiffany': 22, 'Robert': 25}

이 코드를 실행하면 Charlie가 없는 딕셔너리 목록이 인쇄됩니다.

  • 우리는 del Dict 코드를 사용했습니다.
  • 코드가 실행되면 Charlie가 메인 Dict에서 삭제됩니다.

딕셔너리의 “items()” 메서드

items() 메서드는 딕셔너리에서 튜플 쌍(키, 값)의 목록을 반환합니다.

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print("Students Name: %s" % list(Dict.items()))
  • 우리는 Dict에 items() 메서드 코드를 사용합니다.
  • 코드가 실행되면 딕셔너리에서 항목(키와 값) 목록을 반환합니다.

주어진 “키”가 딕셔너리에 이미 존재하는지 확인

주어진 목록에 대해, 자식 딕셔너리가 주 딕셔너리에 있는지 없는지도 확인할 수 있습니다.
여기에는 두 개의 하위 딕셔너리 “Boys”와 “Girls”가 있습니다. 이제 우리의 딕셔너리 Boys가 주 “Dict”에 있는지 없는지 확인하고 싶습니다. 이를 위해 else if 메서드와 함께 for loop 메서드를 사용합니다.

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
for key in list(Boys.keys()):
    if key in list(Dict.keys()):
        print(True)
    else:       
        print(False)
        
        


####  결과 :

True

True

True 
  • 코드의 for loop 는 메인 딕셔너리의 각 키에서 Boys 키를 확인합니다.
  • 메인 딕셔너리에 존재하면 true를 출력해야 하고, 그렇지 않으면 false를 출력해야 합니다.
  • 코드를 실행하면 “Boys” 딕셔너리에 세 개의 요소가 있으므로 “True”가 세 번 인쇄됩니다.
  • 그래서 그것은 “Boys”가 우리의 주요 딕셔너리(Dict)에 존재한다는 것을 나타냅니다.

딕셔너리의 “정렬”

딕셔너리에서 요소를 정렬할 수도 있습니다.
예를 들어 사전의 요소 이름을 알파벳순으로 인쇄하려면 for loop를 사용해야 합니다. 그러면 딕셔너리의 각 요소가 그에 따라 정렬됩니다.

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}
Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}
Students = list(Dict.keys())
Students.sort()
for S in Students:
      print(":".join((S,str(Dict[S]))))
      
      

#### 결과 : 

Charlie:12

Robert:25

Tiffany:22

Tim:18
  • 우리는 딕셔너리 “Dict”에 대해 students 변수를 선언했습니다.
  • 그런 다음 우리는 딕셔너리 내부의 요소를 정렬할 Students.sort 코드를 사용합니다.
  • 그러나 딕셔너리의 각 요소를 정렬하려면 변수 S를 선언하여 for loop를 실행합니다.
  • 이제 코드를 실행하면 for loop가 사전의 각 요소를 호출하고 문자열과 값을 순서대로 인쇄합니다.

Python 딕셔너리 내장 함수

len() 메서드

len() 함수는 딕셔너리에 있는 쌍의 개수를 알려 줍니다.

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print("Length : %d" % len (Dict))

len(Dict) 함수가 실행되면 딕셔너리에 4개의 요소가 있으므로 출력은 “4”가 됩니다.

변수 유형

파이썬은 예약 메모리 공간을 명시적으로 선언할 필요가 없습니다. 자동으로 선언됩니다. 변수에 값을 할당하는 “=” 등호가 사용됩니다. 변수 유형을 결정하는 코드는 “%type (Dict)”입니다.

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print("variable Type: %s" %type (Dict))




#### 결과 : 
variable Type: <class 'dict'>
  • %type 코드를 사용하여 변수 유형을 알아볼 수 있습니다.
  • 코드가 실행되면 변수 유형이 딕셔너리임을 알려줍니다.

리스트 cmp() 메서드

compare 메서드 cmp()는 Python에서 두 딕셔너리의 값과 키를 비교하는 데 사용됩니다.
메서드는 두 사전이 같으면 0을 반환하고, dic1 > dict2이면 1을 반환하고, dict1 < dict2이면 -1을 반환합니다.

### Python2 에서의 예제


Boys = {'Tim': 18,'Charlie':12,'Robert':25}
Girls = {'Tiffany':22}	
print cmp(Girls, Boys)

  • 우리는 “Boys”와 “Girls”라는 두 개의 딕셔너리 이름을 가지고 있습니다.
  • 코드에서 먼저 선언한 “cmp(Girls, Boys)”는 딕셔너리 1로 간주됩니다. 우리의 경우 “Girls”를 먼저 선언 했으므로 딕셔너리 1로 간주되고 boys는 딕셔너리 2로 간주됩니다.
  • 코드가 실행되면 -1이 출력됩니다. 이는 딕셔너리 1이 딕셔너리 2보다 작다는 것을 나타냅니다.

Str(dict)

Str() 메서드를 사용하면 딕셔너리를 인쇄 가능한 문자열 형식으로 만들 수 있습니다.

Dict = {'Tim': 18,'Charlie':12,'Tiffany':22,'Robert':25}	
print("printable string:%s" % str (Dict))



###결과 : 

printable string:{'Tim': 18, 'Charlie': 12, 'Tiffany': 22, 'Robert': 25}
  • % str (Dict) 코드를 사용하세요
  • 딕셔너리 요소를 인쇄 가능한 문자열 형식으로 반환합니다.

딕셔너리에 메소드 리스트

함수명설명구문
copy()전체 딕셔너리를 새 딕셔너리로 복사dict.copy()
update()기존 항목에 새 항목이나 키-값 쌍을 추가하거나 기존 항목을 삭제하여 딕셔너리를 업데이트합니다.dict.update([기타])
items()딕셔너리에서 튜플 쌍(키, 값)의 목록을 반환합니다.dict.items()
sort()요소를 정렬할 수 있습니다dict.sort()
len()딕셔너리에 있는 쌍의 수를 알려줍니다.길이(dict)
cmp()두 사전의 값과 키를 비교하세요cmp(dict1, dict2)
Str()딕셔너리를 인쇄 가능한 문자열 형식으로 만들기Str(dict)

딕셔너리의 병합(합치기)

여기서는 두 개의 주어진 딕셔너리를 하나로 병합하는 방법을 알아보겠습니다.

아래와 같이 두 개의 사전이 있습니다.

#딕셔너리1 : my_dict1
my_dict1 = {"username": "XYZ", "email": "xyz@gmail.com", "location":"Mumbai"}


#딕셔너리2 : my_dict2
my_dict2 = {"firstName" : "Nick", "lastName": "Price"}

두 딕셔너리 my_dict1과 my_dict2를 병합하고 이름이 my_dict인 단일 딕셔너리를 만들어 보겠습니다.

update() 메서드를 사용하여 두 개의 딕셔너리 병합

update() 메서드는 한 딕셔너리를 다른 딕셔너리와 병합하는 데 도움이 됩니다.
이 예에서 my_dict1을 my_dict2로 업데이트합니다.
update() 메서드를 사용한 후 my_dict1은 아래와 같이 my_dict2의 내용을 갖게 됩니다.

my_dict1 = {"username": "XYZ", "email": "xyz@gmail.com", "location":"Mumbai"}

my_dict2 = {"firstName" : "Nick", "lastName": "Price"}

my_dict1.update(my_dict2)

print(my_dict1)



#### 결과 : 
{'username': 'XYZ', 'email': 'xyz@gmail.com', 'location': 'Mumbai', 'firstName': 'Nick', 'lastName': 'Price'}

** 메서드를 사용하여 딕셔너리 병합(Python 3.5 이상)

**는 Python에서 Kwargs라고 불리며, Python 버전 3.5+에서 작동합니다. **를 사용하면 두 개의 딕셔너리를 병합할 수 있으며 병합된 딕셔너리를 반환합니다. 변수 앞에 **를 사용하면 변수가 모든 내용으로 대체됩니다.

**를 사용하여 두 딕셔너리를 병합하는 실제 예는 다음과 같습니다.

my_dict1 = {"username": "XYZ", "email": "xyz@gmail.com", "location":"Mumbai"}

my_dict2 = {"firstName" : "Nick", "lastName": "Price"}

my_dict =  {**my_dict1, **my_dict2} 

print(my_dict)




### 결과 : 
{'username': 'XYZ', 'email': 'xyz@gmail.com', 'location': 'Mumbai', 'firstName': 'Nick', 'lastName': 'Price'}

딕셔너리의 멤버십 테스트

딕셔너리 내부에 키가 있는지 없는지 테스트할 수 있습니다.
이 테스트는 딕셔너리의 키에서만 수행할 수 있으며 값에서는 수행할 수 없습니다.

멤버십 테스트는 in 키워드를 사용하여 수행됩니다. in 키워드를 사용하여 딕셔너리의 키를 검사하면 키가 있으면 true를 반환하고 없으면 false를 반환합니다.

다음은 딕셔너리의 멤버십 테스트를 보여주는 예입니다.

my_dict = {"username": "XYZ", "email": "xyz@gmail.com", "location":"Mumbai"}
print("email" in my_dict)
print("location" in my_dict)
print("test" in my_dict)



### 결과 : 
True
True
False

요약

  • 프로그래밍 언어의 딕셔너리는 어떤 방식으로든 연결된 정보를 저장하는 데 사용되는 일종의 데이터 구조입니다.
  • Python 딕셔너리는 키와 값의 두 가지 요소로 정의됩니다.
  • 딕셔너리는 정보를 특정한 순서에 따라 저장하지 않으므로, 입력한 순서대로 정보를 얻지 못할 수도 있습니다.
  • 키는 단일 요소가 됩니다.
  • 은 리스트나 리스트 내의 리스트, 문자, 숫자 등일 수 있습니다.
  • 키당 두 개 이상의 항목은 허용되지 않습니다(중복 키는 허용되지 않습니다)
  • 딕셔너리의 값은 어떤 유형이든 될 수 있지만, 키는 숫자, 튜플, 문자열과 같이 변경 불가능해야 합니다.
  • 딕셔너리 키는 대소문자를 구분합니다. 키 이름은 같지만 대소문자가 다르면 Python 딕셔너리에서는 다른 키로 처리됩니다.

Leave a Comment