我有清單:
productlinks = ['google.com', 'tes.com', 'lol.com']
name = ['google', 'tes', 'lol']
prices = ['$ 125.000,00', '$ 123.000,00','$ 135.000.000,00']
我想相互鏈接并按價格排序,所以當我排序時,它看起來像這樣:
productlinks = ['tes.com', 'google.com', 'lol.com']
name = ['tes', 'google', 'lol']
prices = ['$ 123.000,00', '$ 125.000,00','$ 135.000.000,00']
我已經使用 zip 功能將其合并,但我不知道如何按價格對其進行排序。
注意:字串中的價格。
uj5u.com熱心網友回復:
要對壓縮所有三個串列后獲得的串列進行排序,您可以使用此代碼,
import re
new_prices = list(map(lambda text: re.findall("\d \.\d ", text)[0], prices))
final_list = list(zip(productlinks, name, new_prices))
sorted_list = pd.DataFrame(final_list).sort_values(by = 2).values
我在pandas這里使用了排序部分的模塊。
第一行去掉了價格中的所有“ , ”和“ $ ”,并將其余的轉換為浮點數。然后這些新價格zipped與其他兩個串列一起,然后我們得到的壓縮輸出被轉換成一個串列。
因為final_list看起來很像一張表格,所以我將它轉換為一個pandas資料框,并按價格值的列對其進行排序。現在整個資料框都已排序,我使用.values.
如果要添加“ $ ”,可以將第三行替換為以下代碼,
sorted_df = pd.DataFrame(final_list).sort_values(by = 2)
sorted_df[2] = "$" sorted_df[2].astype(str)
sorted_list = sorted_df.values
uj5u.com熱心網友回復:
使用sort功能并提供您需要排序的基礎的鍵,您可以對資料進行排序
>>> productlinks = ['google.com', 'tes.com', 'lol.com']
>>> name = ['google', 'tes', 'lol']
>>> prices = ['$ 125', '$ 123','$ 135']
>>>
>>> l = list(zip(productlinks, name, prices))
>>> l.sort(key=lambda x:int(x[2].split()[-1]))
>>>
>>> l
[('tes.com', 'tes', '$ 123'), ('google.com', 'google', '$ 125'), ('lol.com', 'lol', '$ 135')]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/466417.html
上一篇:從陣列偽排序
