list根据另外一个list进行排序

需求描述

现在有两个list对象,ba的子集:

a = ['市辖区', '文峰区', '北关区', '殷都区', '龙安区', '安阳县', '汤阴县', '内黄县', '林州市', '高新区']

b = ['内黄县', '北关区', '安阳县', '文峰区', '林州市', '殷都区', '汤阴县', '高新区', '龙安区']

想要让b依照a中的顺序进行重新排序

实现方法

分步实现

# 先生成b中每个元素在a中位置的序列
c = [a.index(x) for x in b]
# [7, 2, 5, 1, 8, 3, 6, 9, 4]

# 使用zip()将位置序列与原序列打包成元组对象后,再使用sorted() 函数对所有可迭代的对象进行排序操作得到序列
b = [x for _,x in sorted(zip(c,b))]
# ['文峰区', '北关区', '殷都区', '龙安区', '安阳县', '汤阴县', '内黄县', '林州市', '高新区']

一行实现

b = [x for _,x in sorted(zip([a.index(x) for x in b],b))]
发布了208 篇原创文章 · 获赞 92 · 访问量 45万+

猜你喜欢

转载自blog.csdn.net/lpwmm/article/details/104448464