在python中按1个元素对列表进行分类

2024-09-30 16:36:21 发布

您现在位置:Python中文网/ 问答频道 /正文

列表示例:

[
["url","name","date","category"]
["hello","world","2010","one category"]
["foo","bar","2010","another category"]
["asdfasdf","adfasdf","2010","one category"]
["qwer","req","2010","another category"]
]

我想做的是创建一个字典->类别:[条目列表]。在

生成的字典将是:

^{pr2}$

Tags: nameurl示例hello列表worlddate字典
3条回答
dict((category, list(l)) for category, l 
     in itertools.groupby(l, operator.itemgetter(3))

这里的主要内容是itertools.groupby的用法。它只返回iterables而不是list,这就是为什么要调用list(l),这意味着如果您同意,可以简单地写dict(itertools.groupby(l, operator.itemgetter(3)))

ghostdog74的答案的变体,它完全使用了setdefaults的语义:

result={}
for li in list_of_lists:
    result.setdefault(li[-1], []).append(li)
newdict = collections.defaultdict(list)
for entry in biglist:
  newdict[entry[3]].append(entry)

相关问题 更多 >