Python-지도

ChainMap이라고도하는 Python Maps는 여러 사전을 하나의 단위로 함께 관리하는 데이터 구조 유형입니다. 결합 된 사전에는 중복 키를 제거하는 특정 시퀀스의 키 및 값 쌍이 포함됩니다. ChainMap의 가장 좋은 용도는 한 번에 여러 사전을 검색하고 적절한 키-값 쌍 매핑을 얻는 것입니다. 또한 이러한 ChainMap이 스택 데이터 구조로 작동하는 것을 볼 수 있습니다.

ChainMap 생성

컬렉션 라이브러리의 ChainMap 메서드를 사용하여 두 개의 사전을 만들고 클럽 화합니다. 그런 다음 사전 조합 결과의 키와 값을 인쇄합니다. 중복 키가있는 경우 첫 번째 키의 값만 유지됩니다.

import collections

dict1 = {'day1': 'Mon', 'day2': 'Tue'}
dict2 = {'day3': 'Wed', 'day1': 'Thu'}

res = collections.ChainMap(dict1, dict2)

# Creating a single dictionary
print(res.maps,'\n')

print('Keys = {}'.format(list(res.keys())))
print('Values = {}'.format(list(res.values())))
print()

# Print all the elements from the result
print('elements:')
for key, val in res.items():
    print('{} = {}'.format(key, val))
print()

# Find a specific value in the result
print('day3 in res: {}'.format(('day1' in res)))
print('day4 in res: {}'.format(('day4' in res)))

위의 코드를 실행하면 다음과 같은 결과가 나옵니다.

[{'day1': 'Mon', 'day2': 'Tue'}, {'day1': 'Thu', 'day3': 'Wed'}] 

Keys = ['day1', 'day3', 'day2']
Values = ['Mon', 'Wed', 'Tue']

elements:
day1 = Mon
day3 = Wed
day2 = Tue

day3 in res: True
day4 in res: False

지도 재정렬

위의 예에서 사전을 클러빙하는 동안 순서를 변경하면 요소의 위치가 마치 연속적인 체인에있는 것처럼 변경되는 것을 볼 수 있습니다. 이것은 다시지도의 동작을 스택으로 보여줍니다.

import collections

dict1 = {'day1': 'Mon', 'day2': 'Tue'}
dict2 = {'day3': 'Wed', 'day4': 'Thu'}

res1 = collections.ChainMap(dict1, dict2)

print(res1.maps,'\n')

res2 = collections.ChainMap(dict2, dict1)

print(res2.maps,'\n')

위의 코드를 실행하면 다음과 같은 결과가 나옵니다.

[{'day1': 'Mon', 'day2': 'Tue'}, {'day3': 'Wed', 'day4': 'Thu'}] 

[{'day3': 'Wed', 'day4': 'Thu'}, {'day1': 'Mon', 'day2': 'Tue'}]

지도 업데이트

딕셔너리의 요소가 업데이트되면 ChainMap의 결과에서 결과가 즉시 업데이트됩니다. 아래 예제에서는 ChainMap 메서드를 다시 명시 적으로 적용하지 않고 새로 업데이트 된 값이 결과에 반영되는 것을 볼 수 있습니다.

import collections

dict1 = {'day1': 'Mon', 'day2': 'Tue'}
dict2 = {'day3': 'Wed', 'day4': 'Thu'}

res = collections.ChainMap(dict1, dict2)

print(res.maps,'\n')

dict2['day4'] = 'Fri'

print(res.maps,'\n')

위의 코드를 실행하면 다음과 같은 결과가 나옵니다.

[{'day1': 'Mon', 'day2': 'Tue'}, {'day3': 'Wed', 'day4': 'Thu'}] 

[{'day1': 'Mon', 'day2': 'Tue'}, {'day3': 'Wed', 'day4': 'Fri'}]