按照列表中的一维列表第二项从大到小的顺序排序,最后还是以百分号的形式返回。
portfolio = [
['现金', '16.33%', '4.21%'],
['股票', '83.48%', '-0.44%'],
['债券', '- -', '- -'],
['基金', '- -', '- -'],
['其它', '0.19%', '-2.22%']
]
# 创建一个副本用于排序
portfolio_copy = [item[:] for item in portfolio]
# 将"- -"替换为0
for item in portfolio_copy:
if item[1] == '- -':
item[1] = 0
else:
item[1] = float(item[1].strip('%')) / 100.0 # 转换为小数形式
# 排序
portfolio_sorted = sorted(portfolio_copy, key=lambda x: x[1] if x[1] != 0 else float('-inf'), reverse=True)
# 将排序后的数值转换回百分比形式
for item in portfolio_sorted:
if item[1] == 0:
item[1] = '- -'
else:
item[1] = f'{item[1] * 100:.2f}%' # 转换回带有百分号的字符串
print(portfolio_sorted)