我不认为我发现了一个错误,但它对我来说并不正常。
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')
有任何解释吗? (我只期待两个不同的键)。我正在使用python 2.7.1,如果这有所作为
答案 0 :(得分:3)
可迭代需要已经排序(在相同的键函数上):
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')