按第一个元素值Python分组数组

2024-06-16 12:46:10 发布

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

我有一个arr=[title,fileurl]所以当我打印arr时,它是这样的:

['name1', 'url1']
['name1', 'url2']
['name1', 'url3']
['name2', 'url1']
['name2', 'url2']
['name3', 'url1']

我想将这些数组按第一个元素分组,这意味着我希望有:

^{pr2}$

我的代码:

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 

Tags: textinforgettitlefinalarrname1
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']]}

您可以这样做:

from collections import defaultdict as ddict

group = ddict(list)

for name, url in arr:
  group[name].append(url)

如果您确实希望它是一个列表列表,那么您可以使用以下方法:

^{pr2}$

编辑:需要注意的是,上面这行代码适用于Python3,这正是您应该使用的。但是,为了完整起见,如果您使用的是python 2.7,请使用以下命令:

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

相关问题 更多 >