开发者社区> 问答> 正文

如何提取具有相同元素值的列表?

我有一个像这样的清单清单`data = [[“ date1”,“ a”,14,15],[“ date1”,“ b”,14,15],[“ date1”,“ c”,14 ,15],[“ date2”,“ a”,14,15],[“ date2”,“ b”,14,15],[“ date2”,“ c”,14,15],[“ date3” ,“ a”,14,15],[“ date3”,“ b”,14,15],[“ date3”,“ c”,14,15]]我想获得具有相同第二索引的列表。我尝试了这段代码,但是当我只需要3个列表时我得到了9个列表。

    data=[["date1","a",14,15],["date1","b",14,15],["date1","c",14,15],["date2","a",14,15],["date2","b",14,15],["date2","c",14,15],["date3","a",14,15],["date3","b",14,15],["date3","c",14,15]]
    for i in  data:
        a=[]
        for j in data:
            if (i[1]==j[1]):
                a.append(j)
        print(a)

我希望获得[[“ date1”,“ a”,14,15],[“ date2”,“ a”,14,15],[“ date3”,“ a”,14,15]``[“ date1“,” b“,14,15],[” date2“,” b“,14,15],[” date3“,” b“,14,15]``[” date1“,” c“, 14,15],[“ date2”,“ c”,14,15],[“ date3”,“ c”,14,15]

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 22:43:44 549 0
1 条回答
写回答
取消 提交回答
  • data=[["date1","a",14,15],["date1","b",14,15],["date1","c",14,15],["date2","a",14,15],["date2","b",14,15],["date2","c",14,15],["date3","a",14,15],["date3","b",14,15],["date3","c",14,15]]
    
    from itertools import groupby
    from operator import itemgetter
    
    print(
      [list(v) for k,v in groupby(sorted(data, key=itemgetter(1)), key=itemgetter(1))]
    )
    

    为了使groupby工作,必须对数据进行排序。

    根据您的用例,可能不需要迭代器的列表实例化。添加了它以查看正确的输出,而不是<itertools._grouper ...>

    回答来源:stackoverflow

    2020-03-24 22:43:52
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载