Python 언어 깊이 들어가기: 두 사전 대상의 공통 부분 (키,value, 또는 키,value 쌍) 을 신속하게 찾아내는 방법...
구체적인 실제 업무에서, 예를 들어 우리는 사전으로 한 반에서 모든 학생의 모든 과정의 성적을 표시하고 각 학생이 배운 과정에 차이가 있다.우리는 두 학생이 모두 공부하고 있는 과목을 찾아내야 하는 상황에 직면하게 될 것이다.
가장 빠른 방법은 집합 조작 연산자를 사용하여 이 문제를 해결하는 것이다.
Python은 '&', '|', '-' 와 '^', 즉 교차, 합병, 차와 대칭 차 집합 네 가지 연산자를 제공합니다.
예를 들어 t, s는 두 개의 집합이고 이 네 가지 연산의 의미는 다음과 같다.
a = t | s # t와 s의 결합
b = t & s # t와 s의 교차
c = t – s # 구차 세트(항목은 t에 있지만 s에는 없음)
d = t ^ s # 대칭 차집(항목은 t 또는 s에 있지만 둘 다에 동시에 나타나지 않음)
우리의 예로 돌아가서 학생 a의 성적은 다음과 같다고 가정하자.
a = {
" ":56,
" ":66,
" ":77,
" ":88
}
가령 학생 b의 성적은 다음과 같다.
b = {
" ":56,
" ":66,
" ":78,
" ":89
}
1. 그들 둘 다 공부한 과목을 찾아내려면 키에 대한 교집 연산으로
common_class = a.keys() & b.keys()
print(' :', common_class)
# : : {' ', ' ', ' '}
2. 그들 둘 중 한 사람만 배운 과목을 찾아내려면 키에 대한 대칭차 집합 연산으로
exclusive_class = a.keys() ^ b.keys()
print(' ', exclusive_class)
# : {' ', ' '}
3. 모든 과목을 찾아내려면 키에 대해 병렬 연산을 하면 다음과 같다.
all_class = a.keys() | b.keys()
print(' ', all_class )
# : {' ', ' ', ' ', ' ', ' '}
4. 만약에 학생 a가 공부한 과목을 찾아내고 b가 공부하지 않은 과목을 찾아내려면 키에 대해 차집 연산을 하면 다음과 같다.
only_class = a.keys() - b.keys()
print('a b ', only_class )
# : a b {' '}
이상의 예에서 알 수 있듯이 파이톤에서 사전의 키스 () 연산으로 생성된 키 집합은 하나의 집합 대상으로 간주된다.집합이 가지고 있는 관련 연산을 실행할 수 있다.이 몇 가지 연산은 목록 대상에 적용되지 않는다. 목록에 중복된 요소가 나타날 수 있기 때문에 집합과 완전히 다른 유형이기 때문에 파이톤은 디자인할 때 이런 연산을 지원할 필요가 없다.
위의 예에서 더 나아가 만약에 우리가 두 사전에서 완전히 같은 요소를 찾아내려면 집합 연산을 빌려 실현할 수도 있다.사전 대상에서 키처럼 모든 요소가 유일하기 때문이다.
5. 그들 둘 다 과목과 성적이 같은 항목을 찾아내려면items에 대한 교집 연산으로
common_class_score = a.items() & b.items()
print(' :', common_class_score)
# : : {' ', ' ', ' '}
같은 이치로, 우리는 items ()에 대해 기타 세 가지 집합 연산을 실행할 수 있다.
마지막으로 사전의values (), 즉 사전의 값의 집합 (사전에서values () 연산을 실행한 결과) 은 집합 연산을 지원하지 않습니다.작은 연습으로 파이톤이 사전 대상values () 의 집합 연산을 지원하지 않는 이유를 독자 스스로 설명해 주십시오.
전재 대상:https://www.cnblogs.com/python-data-dev/articles/9863869.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.