Python:如何将一个列表的排序(按最大值)应用于另一个列表的元素索引排序

例如


lst1=['1.11','3.34','2.44','4.5']

lst2=['100.0','5000.9','999.0','666.0']

我想将 lst1 中的值从最大到最小排序,我可以这样做:


lst1_sorted=sorted(lst1,key=float,reverse=True)


lst1_resorted = ['4', '3', '2', '1']

但后来我也想在 lst2 上使用排序,以便


lst2_resorted = ['666','5000','999','100']

这需要专门用于浮点数的列表条目。例如,我可以在上面使用 key=float。理想情况下无需导入另一个库。


慕运维8079593
浏览 260回答 2
2回答

心有法竹

您可以像这样利用熊猫库import pandas as pd# beforelst1=['1','3','2','4']lst2=['100','5000','999','666']# Use pandasdf = pd.DataFrame({'A':lst1,'B':lst2}).sort_values('A', ascending =False)# Afterlst1 = df['A'].tolist()lst2 = df['B'].tolist()

慕丝7291255

您可以使用enumerate来计算您的索引,然后通过它们索引两次。或者,事实上,任意次数。from operator import itemgetteridx = sorted(enumerate(lst1), key=lambda x: float(x[1]), reverse=True)getter = itemgetter(*map(itemgetter(0), idx))res1 = list(getter(lst1))  # ['4', '3', '2', '1']res2 = list(getter(lst2))  # ['666', '5000', '999', '100']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python