Как отсортировать (список / кортеж) списки / кортежи по элементу по заданному индексу?

Если вы хотите получить несколько значений атрибутов из источника выше, вы можете использовать findAll и понимание списка, чтобы получить все, что вам нужно:

import urllib
f = urllib.urlopen("http://58.68.130.147")
s = f.read()
f.close()

from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(s)

inputTags = soup.findAll(attrs={"name" : "stainfo"})
### You may be able to do findAll("input", attrs={"name" : "stainfo"})

output = [x["stainfo"] for x in inputTags]

print output
### This will print a list of the values.
539
задан Ciro Santilli 新疆改造中心996ICU六四事件 4 June 2019 в 11:56
поделиться

2 ответа

sorted_by_second = sorted(data, key=lambda tup: tup[1])

или:

data.sort(key=lambda tup: tup[1])  # sorts in place
1000
ответ дан 22 November 2019 в 22:07
поделиться

Я бы использовал ответ Стивена . Для полноты, вот шаблон DSU (decorate-sort-undecorate) со списком:

decorated = [(tup[1], tup) for tup in data]
decorated.sort()
undecorated = [tup for second, tup in decorated]

Или, более кратко:

[b for a,b in sorted((tup[1], tup) for tup in data)]

Как отмечалось в Python Sorting HowTo , в этом нет необходимости, начиная с Python 2.4. , когда стали доступны ключевые функции.

27
ответ дан 22 November 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: