为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕运维8079593 2021-10-26 11:00:59
例如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。理想情况下无需导入另一个库。
查看完整描述

2 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

您可以像这样利用熊猫库


import pandas as pd


# before

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

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


# Use pandas

df = pd.DataFrame({'A':lst1,'B':lst2}).sort_values('A', ascending =False)


# After

lst1 = df['A'].tolist()

lst2 = df['B'].tolist()


查看完整回答
反对 回复 2021-10-26
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

您可以使用enumerate来计算您的索引,然后通过它们索引两次。或者,事实上,任意次数。


from operator import itemgetter


idx = 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']


查看完整回答
反对 回复 2021-10-26
  • 2 回答
  • 0 关注
  • 256 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信