How do I merge two dictionaries in a single expression …
딕셔너리 x와 y가 있을 때, 얕게 병합된 딕셔너리 z는 x의 값을 우선적으로 사용합니다. y에 있는 키가 x에 없다면, z는 y의 값을 사용합니다.
“`python
x = {‘a’: 1, ‘b’: 2}
y = {‘b’: 3, ‘c’: 4}
z = {x, y}
print(z) # Output: {‘a’: 1, ‘b’: 3, ‘c’: 4}
“`
이 코드는 x와 y의 모든 키와 값을 병합하여 새로운 딕셔너리 z를 만듭니다. x와 y에 동일한 키가 있을 경우, y의 값이 z에 사용됩니다.
얕은 병합은 딕셔너리의 값이 복사되지 않고 원본 딕셔너리의 참조가 사용된다는 것을 의미합니다. 즉, z의 값은 x와 y의 원본 딕셔너리의 값에 대한 참조입니다. 따라서 x 또는 y의 값을 변경하면 z의 값도 변경됩니다.
예를 들어, 다음과 같이 y의 값을 변경하면 z의 값도 변경됩니다.
“`python
y[‘b’] = 5
print(z) # Output: {‘a’: 1, ‘b’: 5, ‘c’: 4}
“`
얕은 병합은 간단하고 빠르지만, 원본 딕셔너리의 값이 변경될 경우 예상치 못한 결과를 초래할 수 있습니다. 원본 딕셔너리의 값이 변경되지 않도록 하려면 깊은 병합을 사용해야 합니다.
깊은 병합은 딕셔너리의 값을 복사하여 새로운 딕셔너리를 만듭니다. 따라서 원본 딕셔너리의 값이 변경되어도 깊은 병합된 딕셔너리의 값은 변경되지 않습니다.
“`python
import copy
x = {‘a’: 1, ‘b’: {‘c’: 2}}
y = {‘b’: {‘d’: 3}}
z = {x, y}
print(z) # Output: {‘a’: 1, ‘b’: {‘d’: 3}}
z = copy.deepcopy(x)
z.update(y)
print(z) # Output: {‘a’: 1, ‘b’: {‘c’: 2, ‘d’: 3}}
“`
이 코드는 깊은 복사를 사용하여 x의 값을 복사하여 새로운 딕셔너리 z를 만듭니다. 그런 다음 y의 값을 z에 업데이트합니다. y의 값이 x의 값과 충돌하면 y의 값이 우선 적용됩니다.
깊은 병합은 얕은 병합보다 더 복잡하고 느리지만, 원본 딕셔너리의 값이 변경되지 않도록 안전합니다.
여기에서 더 많은 정보를 확인하세요: drrishisingh.com
Categories: 파이썬 딕셔너리 합치기: 효율적인 방법 총정리
See more: drrishisingh.com/religious