파이썬에서 불변 사전을 만드는 방법 #PyTip01
2642 단어 tutorialpythonprogramming
사전은 훌륭하지만 변경 가능하므로 초기화 후에 값을 변경할 수 있습니다.
이 짧은 게시물에서는
MappingProxyType
를 사용하여 사전을 불변으로 만드는 방법을 배웁니다.문제
다음은 Python에서 사전을 사용하는 방법의 예입니다.
>>> person = {"id" : 735616, "first_name": "John", "last_name":"Doe"}
>>> person["id"]
735616
>>> person["first_name"] + ' ' + person["last_name"]
'John Doe'
>>> person["id"] = 000000
>>> person["id"]
0
위의 코드에서
person
레코드가 변경되었으며 이 변경을 차단할 방법이 없음을 알 수 있습니다. 이것은 MappingProxyType
가 들어오는 곳입니다.해결책
MappingProxyType
는 기본 데이터 구조에 대한 프록시를 제공하는 읽기 전용 래퍼입니다. MappingProxyType
데이터를 변경할 수 없게 만드는 항목 할당을 지원하지 않습니다.>>> from types import MappingProxyType
>>> im_person = MappingProxyType({"id":736533, "first_name":"John", "last_name":"Doe"})
>>> im_person["id"]
736533
>>> im_person["id"] = 87
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'mappingproxy' object does not support item assignment
위의 예에서
id
의 값을 변경하려고 시도하면 MappingProxyType
가 즉시 TypeError
를 발생시켜 사전을 불변으로 만드는 것을 볼 수 있습니다. MappingProxyType
는 사전뿐만 아니라 모든 데이터 유형을 허용합니다. str
및 list
를 사용할 수도 있습니다.경고
MappingProxyType
를 사용하기 전에 기본 데이터 구조에 프록시만 제공한다는 점을 알아야 합니다. 즉, 기본 데이터가 변경되면 MappingProxyType
에 해당 변경 사항이 반영됩니다.>>> im_person = MappingProxyType(person)
>>> im_person
mappingproxy({'id': 0, 'first_name': 'John', 'last_name': 'Doe'})
>>> person
{'id': 0, 'first_name': 'John', 'last_name': 'Doe'}
>>> person["id"] = 00
>>> im_person
mappingproxy({'id': 0, 'first_name': 'John', 'last_name': 'Doe'})
>>>
위의 코드에서 볼 수 있듯이 기본 데이터 사전이 변경될 때
MappingProxyType
가 변경되었습니다.결론
이 짧은 기사에서
types.MappingProxyType
에 대해 배웠습니다.키/값 쌍이 변경되지 않도록 하려는 경우에 유용합니다. 당신이 그것을 좋아 바랍니다.
Reference
이 문제에 관하여(파이썬에서 불변 사전을 만드는 방법 #PyTip01), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vivekthedev/how-to-make-immutable-dictionaries-in-python-pytip01-2gjb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)