假设给一个列表,[u'赵', u'钱', u'孙', u'李', u'周', u'吴']
数据列表,[[u'钱', 1], [u'吴', 2], [u'周', 3], [u'赵', 4], [u'孙', 5]]
我们获取的数据需要按照这个列表的顺序进行排序,按照之前python介绍的sorted中的key无法使用给定的顺序列表来排序,所以写了一个方法。
如果有更好的写法,欢迎分享!
# -*- coding: utf-8 -*-
list_name = [u'赵', u'钱', u'孙', u'李', u'周', u'吴']
print list_name
sort_name = [[u'钱', 1], [u'吴', 2], [u'周', 3], [u'赵', 4], [u'孙', 5]]
# 1.先取列表中的需要作为排序参数的列
list_sort = []
for i in sort_name:
list_sort.append(i[0])
# 2.判断设置的元素对比列表是否包含数据中的所有元素,不包括就加到对比列表后面
list_diff = list(set(list_sort) - set(list_name))
if list_diff:
list_name.extend(list_diff)
# 3.再对于这个列按照我们想要的顺序进行排序
# 之所以要排序一个作为排序参数的列表,因为后面排序,是替换列表的内容,如果需要排序列表的参数列的个数少于比对的列表,就会报错
list_sort = sorted(list_sort, key=list_name.index)
# 4.构造一个列表,与需要排序的列表相同
list_sort_end = [i for i in sort_name]
# 5.从需要排序的列表获取元素,然后获取这个元素在排序参数列表中的位置,修改构造列表中的元素位置
for i in sort_name:
name_index = list_sort.index(i[0])
list_sort_end[name_index] = i
print list_sort_end