4

バグを発見したとは思いませんが、私には正常に見えません。

from itertools import groupby
from operator import itemgetter
c=[((u'http://www.example.com', u'second_value'), u'one'), 
   ((u'http://www.example.com', u'second_value'), u'two'), 
   ((u'http://www.hello.com', u'second_value'), u'one'), 
   ((u'http://www.example.com', u'second_value'), u'three'), 
   ((u'http://www.hello.com', u'second_value'), u'two')]
b= groupby(c, key=itemgetter(0))
for unique_keys, group in b:
    print unique_keys

収量:

(u'http://www.example.com', u'second_value')
(u'http://www.hello.com', u'second_value')
(u'http://www.example.com', u'second_value')
(u'http://www.hello.com', u'second_value')

説明はありますか?(私は2つの異なるキーしか期待していませんでした)。それが違いを生む場合、私はpython 2.7.1を使用しています

4

1 に答える 1

3

iterable はすでにソートされている必要があります (同じキー関数で):

from itertools import groupby
from operator import itemgetter
c=[((u'http://www.example.com', u'second_value'), u'one'), 
   ((u'http://www.example.com', u'second_value'), u'two'), 
   ((u'http://www.hello.com', u'second_value'), u'one'), 
   ((u'http://www.example.com', u'second_value'), u'three'), 
   ((u'http://www.hello.com', u'second_value'), u'two')]
b= groupby(sorted(c,key=itemgetter(0)), key=itemgetter(0))
for unique_keys, group in b:
    print unique_keys

アウト:

(u'http://www.example.com', u'second_value')
(u'http://www.hello.com', u'second_value')
于 2013-01-16T09:18:38.463 に答える