li=['sight', 'first', 'love', 'was', 'at', 'It']
d={}
for word in li:
d.setdefault(len(word), []).append(word)
result=[d[n] for n in sorted(d, reverse=True)]
print result
# [['sight', 'first'], ['love'], ['was'], ['at', 'It']]
您可以使用defaultdict:
^{pr2}$
或者使用__missing__,如下所示:
class Dicto(dict):
def __missing__(self, key):
self[key]=[]
return self[key]
d=Dicto()
for word in li:
d[len(word)].append(word)
result=[d[n] for n in sorted(d, reverse=True)]
print result
您可以使用临时字典,然后按长度排序:
您可以使用defaultdict:
^{pr2}$或者使用
__missing__
,如下所示:因为
groupby
溶液已经被采用;-)使用
itertools.groupby
:请注意,要使
^{pr2}$itertools.groupby
正常工作,所有项目必须按长度排序,否则使用collections.defaultdict
(O(N)
)或先对列表排序,然后使用itertools.groupby
(O(NlogN)
)。公司名称:如果希望最终输出列表也被排序,那么最好按长度对列表项进行排序,并对其应用
itertools.groupby
。在相关问题 更多 >
编程相关推荐