개발자/라즈베리파이4

라즈베리파이 Python Programming 09: 파이선 set and dictionary

지구빵집 2021. 11. 4. 10:27
반응형

 

 

라즈베리파이 Python Programming 09: 파이선 set and dictionary 

 

이전 튜토리얼에서 리스와 바이트 배열에서 데이터를 다룰 수 있음을 배웠습니다. Python에는 Set과 Dictionary을 포함하여 변경 가능한 순서 없는 컬렉션도 있습니다.

 

이 두 가지를 검토하고 집합과 사전에서 데이터 값/객체를 조작하는 방법을 알아보겠습니다.

 

Set 집합

 

집합은 순서가 지정되지 않은 변경 가능한 항목 모음입니다. 세트의 항목은 임의의 변경할 수 없는 개체일 수 있으며 각 개체는 고유해야 합니다. 즉, 중복 항목이 허용되지 않습니다.

 

Python의 집합은 수학적 집합과 유사합니다. 예를 들어 항목을 집합의 요소라고 합니다. 집합은 set( ) 생성자 또는 한 쌍의 중괄호({ })를 사용하여 정의됩니다. set( ) 생성자를 사용하여 집합을 만들 때 하나의 인수만 전달할 수 있습니다. 따라서 집합의 요소는 집합( ) 생성자의 인수로 목록에 그룹화되어야 합니다.

 

다음은 몇 가지 유효한 예입니다.

 

s1 = {1, 2, 3, 4}
print(s1)
s2 = set([‘a’, ‘b’, ‘c’])
print(s2)

 

집합의 요소는 변경 가능한 개체일 수 없습니다. 즉, 목록, 집합 및 사전은 집합의 요소가 될 수 없습니다. 그러나 문자열, 바이트, 정수, 부동 소수점, 복소수 및 튜플은 집합의 요소가 될 수 있습니다.

 

빈 집합은 인수 없이 set() 생성자를 사용하거나 빈 중괄호 쌍을 사용하여 만들 수 있습니다.

 

다음은 빈 집합의 유효한 예입니다.

 

s1 = {}
s2 = set()

 

집합은 순서가 지정되지 않은 컬렉션이므로 해당 요소는 키나 인덱스에 바인딩되지 않습니다. 세트의 요소는 키나 인덱스로 액세스 할 수 없지만 요소가 세트에 속하는지 여부를 테스트할 수 있습니다. 이 경우 집합의 요소는 해당 값으로 참조됩니다.

 

집합에는 변경할 수 없는 개체만 포함될 수 있지만 집합 자체는 변경할 수 있습니다. 따라서 집합의 요소를 추가, 제거 및 수정할 수 있습니다. 집합에 포함된 변경할 수 없는 개체는 연산자, 집합 메서드 및 내장 Python 함수를 사용하여 조작할 수 있습니다.

 

Set에는 다음과 같은 메쏘드가 있습니다.

 

 

set_name.method_name 구문을 사용하여 집합에 메서드를 적용할 수 있습니다. 다음은 set 메서드의 유효한 예입니다.

 

s1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
s2 = {2, 4, 6}
s3 = {2, 3}
s2.add(8)
print(s2)
s3.update([5, 7, 9, 11])
print(s3)
s3.remove(9)
print(s3)
s3.discard(11)
print(s3)
a = s3.pop()
print(a)
print(s3)
s3.add(a)
s4 = s3.copy()
print(s4)
s4.clear()
print(s4)
s4 = s2.union(s3)
print(s4)
s5 = s2.difference(s3)
print(s5)
s5 = s2.symmetric_difference(s3)
print(s5)
s5 = s2.intersection(s3)
print(s5)
print(s5.isdisjoint(s3))
s1.difference_update(s5)
print(s1)
s1.add(2)
s1.intersection_update(s5)
print(s1)
s1.update([0, 1, 3, 4, 5, 6, 7, 8, 9])
s1.symmetric_difference_update(s5)
print(s1)
print(s3.issubset(s1))
s1.add(2)
print(s3.issubset(s1))
print(s3.issuperset(s1))
print(s1.issuperset(s3))

 

다음 내장 Python 함수는 집합을 인수로 받아들입니다.

 

 

다음은 집합에서 함수를 사용하는 유효한 예입니다.

 

s1 = {‘a’, ‘c’, None, ‘b’}
s2 = {12, 8, 41, 245, 5}
print(len(s1))
print(any(s1))
print(all(s1))
s1.remove(None)
print(max(s1))
print(min(s1))
print(sum(s2))
print(sorted(s1))
print(sorted(s2))
for x in enumerate(sorted(s1)):
print(x)

 

다음 표에는 연산자, 명령문, 메서드 또는 함수를 사용할 때 집합에 대한 일반적인 작업이 요약되어 있습니다.

 

 

집합의 요소에는 순서가 없으므로 중복 요소가 허용되지 않는다는 점에 유의하는 것이 중요합니다. 합집합 방식을 적용할 때 두 집합에 중복 요소가 있는 경우 집합에는 중복 복사본이 하나만 남게 됩니다.

 

마찬가지로 세트에 중복 요소를 추가하거나 업데이트해도 변경되지 않습니다. 집합 에는 항상 고유한 요소가 있습니다.

 

Dictionary

 

사전은 변경 가능한 순서 없는 키-값 쌍의 모음입니다. 사전의 키는 변경 불가능하고 "해시 가능한"(고유한) 객체일 수 있습니다. 값에는 임의의 변경할 수 없거나 변경할 수 있는 개체가 포함될 수 있습니다.

 

사전은 dict() 생성자를 사용하거나 한 쌍의 중괄호({})를 사용하여 정의할 수 있습니다. 다음은 사전의 유효한 예입니다.

 

d1 = {x:25, y:57, z:64}
d2 = {‘x’:25, ‘y’:57, ‘z’:64,}
d3 = {‘x’:25, 57:’y’, ‘z’:8.9j6.5}
d4 = dict(x=25, y=57, z=64)
d5 = dict((x, 25), (y, 57), (z, 64))

 

사전의 요소는 해당 키에 바인딩됩니다. 즉, 사전에 저장된 데이터 값/객체는 해당 키를 통해 액세스 할 수 있습니다. 이러한 키는 목록의 정수 키와 달리 해시 가능한 모든 개체를 포함할 수 있습니다.

 

다음은 키로 사전의 요소에 액세스 하는 예입니다.

 

d1 = {‘a’:25, ‘b’:57, ‘c’:92}
print(d1[‘a’])

 

식별자가 키 또는 값으로 사용되는 경우 정의된 객체여야 합니다. 다음 예는 유효하지 않습니다.

 

d1 = {a:25, b:57, c:92}
print(d1[a])

 

다음은 유효한 예입니다.

 

a = 0
b = 1
c = 2
d1 = {a:25, b:57, c:92}
print(d1[a])

 

사전의 요소는 get() 메서드로도 액세스 할 수 있습니다. get() 메서드의 장점 은 키가 없으면 None 객체를 반환한다는 것입니다. 존재하지 않는 키로 사전 요소에 액세스 하려고 하면 KeyError가 발생합니다.

 

다음은 get() 메서드로 사전 요소에 액세스 하는 유효한 예입니다.

 

d1 = {‘a’:25, ‘b’:57, ‘c’:92}
print(d1.get(‘a’)) # Prints 25
print(d1.get(‘d’)) # Prints None

 

사전에는 다음과 같은 Method가 있습니다.

 

 

이러한 메서드는 dict_name.method_name 구문을 사용하여 사전에 적용할 수 있습니다. 다음은 사전 메서드의 유효한 예입니다.

 

d1 = {0:’a’, 1:’b’, 2:’c’, 3:’d’}
print(d1.get(0)) # Prints 25
print(d1.get(4)) # Prints None
print(d1.get(4, ‘Not Found’))
print(d1.keys())
print(d1.values())
print(d1.items())
d1.setdefault(4, ‘e’)
print(d1.items())
d1.update({5:’f’, 6:’g’})
print(d1.items())
d1.pop(6)
print(d1.items())
d1.popitem()
print(d1.items())
d2 = d1.copy()
d1.clear()
print(d1.items())
print(d2.items())
x = [0, 1, 2, 3]
y = ‘VAL’
d1 = dict.fromkeys(x, y)
print(d1.items())
print(d2.items())

 

다음 내장 Python 함수는 사전을 인수로 허용합니다.

 

 

다음은 사전에서 함수를 사용하는 유효한 예입니다.

 

d1 = {0:’a’, 1:’b’, 2:’c’, 3:’d’}
print(len(d1))
print(any(d1))
print(all(d1)) #Returns False as one of the key is 0
d1.pop(0)
print(all(d1))
d2 = {‘LED’: 40, ‘Seven Segment’:12, ‘LCD Display’:4}
print(sorted(d2))
print(sorted(d2, reverse=True))
def f(x):
return len(x)
print(sorted(d2, key=f))

 

다음 표에는 연산자, 문, 메서드 또는 함수를 사용할 때 사전에 대한 일반적인 작업이 요약되어 있습니다.

 

 

사전은 중복 값을 가질 수 있지만 절대 키를 중복할 수 없습니다. 사전의 키는 항상 변경 불가능하고 해시 가능해야 합니다.

 

다음 튜토리얼에서 , 우리는 객체 지향 기능을 다루고 파이썬 디자인 패턴을 알아봅니다.

 

 

 

 

반응형