내장 자료구조, 함수, 파일

wldnjswldnjs·2022년 9월 4일

데이터 분석

목록 보기
11/11

enumerate

  • 순차 자료형에서 현재 아이템의 색인을 함께 처리

  • 색인을 통해 데이터에 접근할 때 enumerate를 사용하는 유용한 패턴은 순차 자료형에서의 값과 그 위치를 dict에 넘겨주는 것이다.

>>> some_list = ['foo', 'bar', 'baz']
>>> mapping = {}
>>> for i, v in enumerate(some_list):
...     mapping[v] = i
...
>>> mapping
{'foo': 0, 'bar': 1, 'baz': 2}

zip

  • 여러 개의 리스트나 튜플 또는 다른 순차 자료형을 서로 짝지어서 튜플의 리스트를 생성
>>> seq1 = ['foo', 'bar', 'baz']
>>> seq2 = ['one', 'two', 'three']
>>> zipped = zip(seq1, seq2)

>>> list(zipped)
[('foo', 'one'), ('bar', 'two'), ('baz', 'three')]

>>> seq3 = [False, True]
>>> list(zip(seq1, seq2, seq3))
[('foo', 'one', False), ('bar', 'two', True)]

>>> for i, (a, b) in enumerate(zip(seq1, seq2)):
...     print('{0}: {1}, {2}'.format(i, a, b))
...
0: foo, one
1: bar, two
2: baz, three

dict

>>> d1 = {'a' : 'some value', 'b' : [1, 2, 3, 4]}
>>> d1
{'a': 'some value', 'b': [1, 2, 3, 4]}
>>> d1[7] = 'an  integer'
>>> d1
{'a': 'some value', 'b': [1, 2, 3, 4], 7: 'an  integer'}
>>> d1['b']
[1, 2, 3, 4]

>>> 'b' in d1 # 사전에 어떤 키가 있는지 확인
True

del , pop

  • pop : 값을 반환함과 동시에 해당 키 삭제
>>> d1[5] = 'some value'  # 추가
>>> d1
{'a': 'some value', 'b': [1, 2, 3, 4], 7: 'an integer', 5: 'some value'}
>>> d1['dummy'] = 'another value'  # 추가
>>> d1
{'a': 'some value', 'b': [1, 2, 3, 4], 7: 'an integer', 5: 'some value', 'dummy': 'another value'}

>>> del d1[5]  # 삭제
>>> d1
{'a': 'some value', 'b': [1, 2, 3, 4], 7: 'an integer', 'dummy': 'another value'}

>>> ret = d1.pop('dummy')  # 값을 반환함과 동시에 해당 키 삭제
>>> ret  # 반환됨
'another value'
>>> d1  # 삭제됨
{'a': 'some value', 'b': [1, 2, 3, 4], 7: 'an integer'}
>>>

keys , values

>>> list(d1.keys())
['a', 'b', 7]

>>> list(d1.values())
['some value', [1, 2, 3, 4], 'an integer']

update

  • 하나의 사전을 다른 사전과 합친다.
>>> d1.update({'b' : 'foo', 'c' : 12})
>>> d1
{'a': 'some value', 'b': 'foo', 7: 'an integer', 'c': 12}

기본값

  • 여러 단어를 시작 글자에 따라 사전에 리스트로 저장
>>> words = ['apple', 'bat', 'bar', 'atom', 'book']
>>> by_letter = {}  # 빈 딕셔너리
>>> for word in words:
...     letter = word[0]  # 각 단어의 0번째 알파벳
...     if letter not in by_letter:
...         by_letter[letter] = [word] # letter : key , word : value
...     else:
...         by_letter[letter].append(word)
...
>>> by_letter
{'a': ['apple', 'atom'], 'b': ['bat', 'bar', 'book']}
>>> words = ['apple', 'bat', 'bar', 'atom', 'book']
>>> by_letter = defaultdict(list)
>>> for word in words:
...     by_letter[word[0]].append(word)
...
>>> by_letter
defaultdict(<class 'list'>, {'a': ['apple', 'atom'], 'b': ['bat', 'bar', 'book']})

집합

  • 사전과 유사하지만 값은 없고 키만 가지고 있다.
  • 두 가지 방법으로 생성 가능
  • 집합 연산을 제공
>>> set([2, 2, 2, 1, 3, 3])
{1, 2, 3}
>>> {2, 2, 2, 1, 3, 3}
{1, 2, 3}

union , |

>>> a = {1, 2, 3, 4, 5}
>>> b = {3, 4, 5, 6, 7, 8}
>>> a.union(b)
{1, 2, 3, 4, 5, 6, 7, 8}
>>> a | b
{1, 2, 3, 4, 5, 6, 7, 8}

intersection , &

>>> a.intersection(b)
{3, 4, 5}
>>> a & b
{3, 4, 5}

p;.

0개의 댓글