*Memo:
groupby() can return the iterator which groups the elements of iterable
by keys one by one to return a tuple of a key and the iterator of an element one by one as shown below:
*Memo:
- The 1st argument is
iterable
(Required-Type:Iterable). - The 2nd argument is
key
(Optional-Default:None
-Type:Callable/NoneType):- It's a key.
- If it's
None
, each element ofiterable
is a key.
from itertools import groupby
v = groupby(iterable=[])
v = groupby(iterable=[], key=None)
print(v)
# <itertools.groupby object at 0x0000026906F60B20>
print(next(v))
# StopIteration:
from itertools import groupby
v = groupby(iterable=['AB', 'CDE', 'FG', 'H', 'IJK'])
print(next(v))
# ('AB', <itertools._grouper object at 0x0000027EC0549D80>)
print(next(v))
# ('CDE', <itertools._grouper object at 0x0000027EC0549D80>)
print(next(v))
# ('FG', <itertools._grouper object at 0x0000027EC0549D80>)
print(next(v))
# ('H', <itertools._grouper object at 0x0000027EC0549D80>)
print(next(v))
# ('IJK', <itertools._grouper object at 0x0000027EC0549D80>)
print(next(v))
# StopIteration:
from itertools import groupby
v = groupby(iterable=['AB', 'CDE', 'FG', 'H', 'IJK'])
key, x = next(v)
print(key, next(x))
# AB AB
key, x = next(v)
print(key, next(x))
# CDE CDE
key, x = next(v)
print(key, next(x))
# FG FG
key, x = next(v)
print(key, next(x))
# H H
key, x = next(v)
print(key, next(x))
# IJK IJK
key, x = next(v)
# StopIteration:
from itertools import groupby
for key, x in groupby(iterable=['AB', 'CDE', 'FG', 'H', 'IJK']):
print(key, next(x))
# AB AB
# CDE CDE
# FG FG
# H H
# IJK IJK
from itertools import groupby
for key, x in groupby(iterable=['AB', 'CDE', 'FG', 'H', 'IJK'], key=len):
print(key, next(x))
# 2 AB
# 3 CDE
# 2 FG
# 1 H
# 3 IJK
from itertools import groupby
d = {}
for key, x in groupby(iterable=['AB', 'CDE', 'FG', 'H', 'IJK'], key=len):
if not key in d:
d.update({key:[]})
d[key].append(next(x))
print(d)
# {2: ['AB', 'FG'], 3: ['CDE', 'IJK'], 1: ['H']}
from itertools import groupby
for key, x in groupby(iterable='ABCDEFGHIJK'):
# for key, x in groupby(iterable=['A', 'B', 'C', 'D', 'E', 'F',
# 'G', 'H', 'I', 'J', 'K']):
print(key, next(x))
# A A
# B B
# C C
# D D
# E E
# F F
# G G
# H H
# I I
# J J
# K K
from itertools import groupby
for key, x in groupby(iterable='ABCDEFGHIJK', key=len):
# for key, x in groupby(iterable=['A', 'B', 'C', 'D', 'E', 'F',
# 'G', 'H', 'I', 'J', 'K'], key=len):
print(key, next(x))
# 1 A
from itertools import groupby
d = {}
for key, x in groupby(iterable='ABCDEFGHIJK', key=len):
# for key, x in groupby(iterable=['A', 'B', 'C', 'D', 'E', 'F',
# 'G', 'H', 'I', 'J', 'K'], key=len):
if not key in d:
d.update({key:[]})
d[key].append(next(x))
print(d)
# {1: ['A']}