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))]
發佈了206 篇原創文章 · 獲贊 92 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章