我写了一个Airbnb刮板,它遍历房屋列表的每个子页面到指定位置,并且每个子页面都返回zip对象,如下所示:
subpage = zip(names, prices)
在抓取单个子页面之后,我将subpage
zip对象添加到列表中:
all_subpages.append(subpage)
因此,all_subpages
最后是一列zip对象,每个对象都包含一个子页面中的数据。
我的问题是我想以HTML表格形式显示all_subpages
中的数据,并且希望这些数据按价格排序。
所以我的问题是:如何打印按价格排序的all_subpages
的内容?
预期输出:
Name Price
Apartment 3 10 GBP
Apartment 1 15 GBP
Apartment 2 20 GBP
etc.
答案 0 :(得分:1)
我对这个问题的看法:
from itertools import chain
names = ['78', '1', '3']
prices = ['15', '20', '10']
names2 = ['82', '11', '33']
prices2 = ['1', '2', '100']
all_subpages = []
subpage = zip(names, prices)
all_subpages.append(subpage)
subpage2 = zip(names2, prices2)
all_subpages.append(subpage2)
print('Home number\tprice')
for (name, price) in sorted(chain.from_iterable(all_subpages), key=lambda v: int(v[1])):
print(f'{name}\t\t{price} GBP')
输出:
Home number price
82 1 GBP
11 2 GBP
3 10 GBP
78 15 GBP
1 20 GBP
33 100 GBP
答案 1 :(得分:1)
给出:
l1=["Apartment 1", "Apartment 3","Apartment 2"]
l2=['15 GBP','10 GBP','20 GBP']
您可以按字典顺序对第二个元素进行排序,如下所示:
>>> sorted(zip(l1,l2), key=lambda t: t[1])
[('Apartment 3', '10 GBP'), ('Apartment 1', '15 GBP'), ('Apartment 2', '20 GBP')]
如果您希望在数字上进行相同的操作,则可以执行以下操作:
>>> sorted(zip(l1,l2), key=lambda t: float(t[1].split()[0]))