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

我有一个数组 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 


喵喵时光机
浏览 263回答 2
2回答

jeck猫

你可以这样做:from collections import defaultdict as ddictgroup = 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()]

一只斗牛犬

试试这个: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']]}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python