为了账号安全,请及时绑定邮箱和手机立即绑定

按第一个元素值 Python 对数组进行分组

按第一个元素值 Python 对数组进行分组

喵喵时光机 2021-08-24 15:32:16
我有一个数组 arr = [title, fileurl] 所以当我打印 arr 时它是这样的:['name1', 'url1']['name1', 'url2']['name1', 'url3']['name2', 'url1']['name2', 'url2']['name3', 'url1']我想按第一个元素对这些数组进行分组,这意味着我想要:['name1', 'url1', 'url2', 'url3']['name2', 'url1', 'url2']['name3', 'url1']我的代码:for final in posterlink:    pagesourcec = requests.get(final)    soupc = BeautifulSoup(pagesourcec.text, "html.parser")    strc = soupc.findAll("iframe", attrs={"id": "myframe"})    title = soupb.find("li",{"class": "breadcrumb-item active"}).get_text()    for embedlink in strc:        fff = embedlink.get('data-src')        arr = [title, fff]        print arr 
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

你可以这样做:


from collections import defaultdict as ddict


group = ddict(list)


for name, url in arr:

  group[name].append(url)

如果你绝对要它作为一个列表的列表,你可以再跟进这一点:


group = [[name, *urls] for name, urls in group.items()]

编辑:这是需要注意的重要的是,上述符合Python 3中,这是什么,你应该使用反正工作。然而,为了完整起见,如果你正在使用python 2.7,然后使用此:


group = [[name] + urls for name, urls in group.items()]


查看完整回答
反对 回复 2021-08-24
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

试试这个:


a = [['name1', 'url1'],

 ['name1', 'url2'],

 ['name1', 'url3'],

 ['name2', 'url1'],

 ['name2', 'url2'],

 ['name3', 'url1']]

d = {}

for elem in a:

    if elem[0] not in d:

        d[elem[0]] = []

    d[elem[0]].append(elem[1:])

输出:


{'name1': [['url1'], ['url2'], ['url3']],

 'name2': [['url1'], ['url2']],

 'name3': [['url1']]}



查看完整回答
反对 回复 2021-08-24
  • 2 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号