순차 자료형에서 현재 아이템의 색인을 함께 처리
색인을 통해 데이터에 접근할 때 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}
>>> 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
>>> 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
>>> 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'}
>>>
>>> list(d1.keys())
['a', 'b', 7]
>>> list(d1.values())
['some value', [1, 2, 3, 4], 'an integer']
>>> 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}
>>> 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}
>>> a.intersection(b)
{3, 4, 5}
>>> a & b
{3, 4, 5}
p;.