Python排序(sort,sorted)保存原来index

最近在写实验程序的时候,总是遇到需要将列表中的元素按照某一个属性进行排序后输出该元素,但是在排序之后index就乱了(其实将属性作为dict()的key或者类属性进行管理是很不错的选择,我觉得也是最合适的),于是提出以下两种比较合适的处理方法:

1、dict()进行管理并排序:

people = list();
people.append({'Name':'Lei Li','Age':15,'Height':180});
people.append({'Name':'Meimei Han','Age':14,'Height':165});
people.append({'Name':'Tom','Age':17,'Height':178});
people.append({'Name':'Lucy','Age':16,'Height':160});

print [x['Name'] for x in people];

people.sort(key=lambda x:x['Age'],reverse=True);

print [x['Name'] for x in people];

结果输出:

['Lei Li', 'Meimei Han', 'Tom', 'Lucy']
['Tom', 'Lucy', 'Lei Li', 'Meimei Han']
[Finished in 0.1s]

这应该是最合适也是最简单的,但是有的时候因为习惯不好,就出现了两个列表管理一个对象的两个属性(实验没设计好,或者信手拈来。。),下面的这种方法就当做救急用用。


2、组合属性并排序:

def combine(outputList,sortList):
	CombineList = list();
	for index in xrange(len(outputList)):
		CombineList.append((outputList[index],sortList[index]));
	return CombineList;
		
NameList = ['Lei Li', 'Meimei Han', 'Tom', 'Lucy'];
HeightList = [180, 165, 178, 160];
people = combine(NameList,HeightList);
print people;
people.sort(key=lambda x:x[1],reverse=True);
print people;

结果输出:

[('Lei Li', 180), ('Meimei Han', 165), ('Tom', 178), ('Lucy', 160)]
[('Lei Li', 180), ('Tom', 178), ('Meimei Han', 165), ('Lucy', 160)]
[Finished in 0.1s]

不过还是强烈建议好好管理属性和对象之间的关系,尽可能整合在一起,这些都是写程序初期容易犯的小毛病,临时的话可以直接调用一下。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值