dict(groupby) 和 groupby 的区别 [英] difference between dict(groupby) and groupby

查看:58
本文介绍了dict(groupby) 和 groupby 的区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个这样的清单

[u'201003', u'200403', u'200803', u'200503', u'201303',
 u'200903', u'200603', u'201203', u'200303', u'200703', u'201103']

我们将此列表称为years_list"

lets call this list as 'years_list'

当我按年分组时,

group_by_yrs_list = groupby(years_list, key = lambda year_month: year_month[:-2]) 
for k,v in group_by_yrs_list:
  print k, list(v)

我得到了想要的输出:

2010 [u'201003']
2004 [u'200403']
2008 [u'200803']
2005 [u'200503']
2013 [u'201303']
2009 [u'200903']
2006 [u'200603']
2012 [u'201203']
2003 [u'200303']
2007 [u'200703']
2011 [u'201103']

然后,我像这样稍微改变了我的实现,

Then, I slightly changed my implementation like this,

  group_by_yrs_list = dict(groupby(years_list, key = lambda year_month: year_month[:-2]))
  for k,v in group_by_yrs_list.items():
    print k, list(v)

我刚刚添加了一个字典,但输出不同,

I have just added a dict, but the output is different,

2003 []
2006 []
2007 []
2004 []
2005 []
2008 []
2009 []
2011 [u'201103']
2010 []
2013 []
2012 []

我不知道为什么.请帮我找出字典实际上在做什么.

I couldn't find out why. Please help me to find what the dict is doing actually.

(Python 2.7)

(Python 2.7)

推荐答案

groupby 产生一对 (key, iterator-of-group).如果您要迭代第二对,则第一对的迭代器组已被消耗,因此您会得到空列表.

groupby yields pairs of (key, iterator-of-group). If you are iterating the second pair, the iterator-of-group of the first pair is already consumed, so you get empty list.

试试下面的代码:

group_by_yrs_list = {year:list(grp) for year, grp in groupby(years_list, key=lambda year_month: year_month[:-2])}
for k, v in group_by_yrs_list.items():
    print k, v

这篇关于dict(groupby) 和 groupby 的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆