|
发表于 2022-12-2 22:59:13
|
显示全部楼层
- from collections import namedtuple
- Person = namedtuple('Person', 'name w h age edu netTime')
- data = [('张三', 70, 178, 20, '本科', 2), ('李四', 68, 178, 24, '研究生', 1), ('王五', 60, 170, 28, '大专', 3)]
- ps = [ Person(*d) for d in data]
- ps
- [Person(name='张三', w=70, h=178, age=20, edu='本科', netTime=2), Person(name='李四', w=68, h=178, age=24, edu='研究生', netTime=1), Person(name='王五', w=60, h=170, age=28, edu='大专', netTime=3)]
- def f(d):
- xs = list('赵钱孙李周郑王张卢崔刘')
- xs_v = dict(zip(xs, range(len(xs), 0, -1))) # 越排在前面,值越大
- edu_v = {'大专': 1, '本科': 2, '研究生': 3}
- return xs_v[d.name[0]] * 0.1 + d.w*0.1 + d.h*0.15 + d.age*0.15 + edu_v[d.edu]*0.2 + d.netTime*0.3 # 具体算法可以根据需要自己改
- f(ps[0])
- 38.1
- sorted(ps, key=f)
- [Person(name='王五', w=60, h=170, age=28, edu='大专', netTime=3), Person(name='张三', w=70, h=178, age=20, edu='本科', netTime=2), Person(name='李四', w=68, h=178, age=24, edu='研究生', netTime=1)]
复制代码 |
|