for*_*tyj 1 python python-itertools
首先,为我对问题的描述不佳而道歉。我找不到更好的了。
我发现将列表应用于 itertools.groupby 结果会破坏结果。见代码:
import itertools
import operator
log = '''\
hello world
hello there
hi guys
hi girls'''.split('\n')
data = [line.split() for line in log]
grouped = list(itertools.groupby(data, operator.itemgetter(0)))
for key, group in grouped:
print key, group, list(group)
print '-'*80
grouped = itertools.groupby(data, operator.itemgetter(0))
for key, group in grouped:
print key, group, list(group)
Run Code Online (Sandbox Code Playgroud)
结果是:
hello <itertools._grouper object at 0x01A86050> []
hi <itertools._grouper object at 0x01A86070> [['hi', 'girls']]
--------------------------------------------------------------------------------
<itertools.groupby object at 0x01A824E0>
hello <itertools._grouper object at 0x01A860B0> [['hello', 'world'], ['hello', 'there']]
hi <itertools._grouper object at 0x01A7DFF0> [['hi', 'guys'], ['hi', 'girls']]
Run Code Online (Sandbox Code Playgroud)
这可能与 groupby 函数的内部工作有关。尽管如此,今天还是让我感到惊讶。
| 归档时间: |
|
| 查看次数: |
1358 次 |
| 最近记录: |