2.8 Dictionary에서 값(Value)만 추출하기
values() - 벨류만 들고오기
dict_values([1, 2])
[1, 2]
각 이름별로 출생한 사람의 수
dict_values([10999, 2111, 9778, 20245, 27115, 5887, 7855])
출생아수 총계: 83990
sum같은 일부 간단한 함수들은 파이썬 자체 내장 되어있어서 그냥 사용 가능하다, 더 복잡한 계산들은 math, numpy같은 라이브러리 모듈들을 불러와서 사용( 각 모듈별로 속도 차이가 있다. )
2.9 Dictionary에서 모든 요소 추출하기
items - 대입하는 값의 모든 아이템(여기서는 키와 벨류)를 다 가져옴
dict_items([('a', 1), ('b', 2)])
[('a', 1), ('b', 2)]
dict_items([('Mary', 10999), ('Sams', 2111), ('Aimy', 9778), ('Tom', 20245), ('Michale', 27115), ('Bob', 5887), ('Kelly', 7855)])
('Mary', 10999)
('Sams', 2111)
('Aimy', 9778)
('Tom', 20245)
('Michale', 27115)
('Bob', 5887)
('Kelly', 7855)
Key: Mary Value: 10999
Key: Sams Value: 2111
Key: Aimy Value: 9778
Key: Tom Value: 20245
Key: Michale Value: 27115
Key: Bob Value: 5887
Key: Kelly Value: 7855
Key: Mary Value: 10999
Key: Sams Value: 2111
Key: Aimy Value: 9778
Key: Tom Value: 20245
Key: Michale Value: 27115
Key: Bob Value: 5887
Key: Kelly Value: 7855
2.10 Dictionary 내부 원소를 조회하고 Tuple/Set 반환하기
(('a', 1), ('b', 2))
('a', 'b')
(1, 2)
{('a', 1), ('b', 2)}
{'b', 'a'}
{1, 2}
2.11 Dictionary에 특정 Key가 존재하는지 확인하기
KeyError: 'c' # 키가 없어서 에러 발생
키가 존재하면 가져오고 없으면 default value 출력하라(예외처리)
default value
조회하고 없으면 d값에 디폴트로 세팅까지해주기
default value
{'a': 1, 'b': 2, 'c': 'default value'}
표준 입력받기 input
표준 출력하기 print
이름을 입력하세요: Sams
이름이 <Sams>인 출생아수는 <2111>명 입니다.
2.12 Dictionary 정렬하기
sorted함수 - 전달한 데이터는 그대로 두고, 리턴을 할 때 해당 내용만 정렬해서 정리함
문자열이 가진 매소드
['Aimy', 'Bob', 'Kelly', 'Mary', 'Michale', 'Sams', 'Tom'] # 키만 가진 상태로 리턴됨
{'Mary': 10999, 'Sams': 2111, 'Aimy': 9778, 'Tom': 20245, 'Michale': 27115, 'Bob': 5887, 'Kelly': 7855}
키값의 순서대로 정렬(f1기준)
[('Aimy', 9778), ('Bob', 5887), ('Kelly', 7855), ('Mary', 10999), ('Michale', 27115), ('Sams', 2111), ('Tom', 20245)]
벨류값의 크기순으로 정렬하라(f2기준)
[('Sams', 2111), ('Bob', 5887), ('Kelly', 7855), ('Aimy', 9778), ('Mary', 10999), ('Tom', 20245), ('Michale', 27115)]
역정렬(reverse이용, f2의 역정렬)
[('Michale', 27115), ('Tom', 20245), ('Mary', 10999), ('Aimy', 9778), ('Kelly', 7855), ('Bob', 5887), ('Sams', 2111)]
벨류만 꺼내서 정렬
[2111, 5887, 7855, 9778, 10999, 20245, 27115]
벨류만 꺼내서 리버스 정렬(역정렬)
[27115, 20245, 10999, 9778, 7855, 5887, 2111]
3. Set
- 일반적인 수학의 집합을 구현한 자료형
- 집합에서 처리하는 산술식을 메서드로 제공하고 있다.
- 집합은 동일한 값이 여러 번 나올 수 없으므로 원소를 Hash로 처리하여 유일성을 유지함
- Dictionary와 동일하게 {}로 표기하지만 내부에 Value가 없고 Key만 존재한다.
3.1 set 생성하기
- 빈 set은 반드시 set()로 생성
- {}는 dict 타입 처리용
- set 일 경우는 반드시 set()으로 빈 set 생성
<class 'set'>
<class 'dict'>
- 리터럴이나 생성자로 set 만들기
{1, 2, 3, 'b', 'a'}
{'b', 'c', 'a'}
- 리터럴로 생성
{1, 2, 3}
3.2 set 기본 연산 처리
합집합(둘 중 하나만 만족해도 상관없음 (A or B)
# 파이프(|)이용 (연산자 이용)
# 집합 연산 매소드 union 이용
{1, 2, 3, 'b', 'a', 'c'}
{1, 2, 3, 'b', 'a', 'c'}
교집합(A and B)
# & 이용
# 연산 매소드 intersection 이용
차집합(A - B)
# - 이용
# 연산 매소드 difference 이용
{1, 2, 3}
{1, 2, 3}
집합에 대한 대칭 차집합
# ^ 이용
# symmetric_difference 이용
{1, 2, 3, 'c'}
{1, 2, 3, 'c'}
3.3 집합연산을 통해 자기 내부 변경하기
차집합을 계산한 후 ll에 업데이트
{1, 2, 3}
교집합을 계산한 후 ll에 업데이트
{'b', 'a'}
대칭 차집합 계산한 후 ll에 업데이트
{1, 2, 3, 'c'}
3.4 집합 원소 처리
방법1) 새로추가한 원소를 집합에 넣어주는 것
{1, 2, 3, 'b', 'c', 'a'}
방법2) 새로 갱신하라(updata)를 이용, 갱신 내용이 기존에 들어있지 않으므로 추가되는 개념
{1, 2, 3, 'b', 4, 5, 'c', 'a'}
원소 삭제
{1, 2, 3, 'a'}
없는 것을 remove하려하면 KeyError: '없는것' 이라고 나옴
pop() 개념 : 따로 지칭 안하면 맨 마지막꺼부터 꺼냄?? 집합에서는 pop이 앞에서 부터 나온다는 말이 있음 확인필요
1
{2, 3, 'b', 'a'}
해당위치 삭제 필요할 때. 삭제할 것을 넣어주면 됨(discard)
None
{2, 3, 'b'}
remove는 키가 반드시 있어야 하지만 discard는 없어도 됨( remove는 키가 없음 에러가 뜨는데, discard 는 키가 없음 None이라 출력함)
None
3.5 집합 간의 관계 확인 연산자 및 메소드
issubset ss는 s의 부분집합이다.
True
True
False # 여기서 알 수 있는 것은 갯수만을 가지고 판단하는것이 아니라 포함관계가 들어가 있는 것이다.
True
True
4. Frozenset
- 집합 자료형에서는 변경가능한 set과 변경불가능한 frozenset을 제공함(고정된 값 유지)
- set은 Dictionary의 키로 사용하지 못하므로 불변형을 제공하고 필요한 경우 frozenset으로 형변환을 해서 처리함
4.1 frozenset 생성하기
frozenset()
<class 'frozenset'>
frozenset({1, 3, 4})
frozenset({1, 2, 4})
4.2 set과의 차이
- frozenset 은 변경불가의 자료형이므로 집합연산의 결과는 내부를 변경하지 않고 새로운 인스턴스 객체를 만듦
- 집합연산 자체는 set과 동일하며, 집합연산을 하고 난 후에 다른 인스턴스를 생성하므로 원본 frozenset은 갱신되지 않음
frozenset({1, 2, 3, 4})
frozenset({1, 4})
frozenset({3})
'PYTHON-BACK' 카테고리의 다른 글
#파이썬 기초 7일차_2 (1) | 2024.07.05 |
---|---|
#파이썬 기초 7일차_1 (1) | 2024.07.05 |
#파이썬 기초 5일차_1 (1) | 2024.07.03 |
#파이썬 기초 4일차_2 (1) | 2024.07.02 |
#파이썬 기초 4일차_1 (0) | 2024.07.02 |