【问题标题】:How to reorder a second list based on the index of first list? [duplicate]如何根据第一个列表的索引重新排序第二个列表? [复制]
【发布时间】:2021-10-12 11:08:01
【问题描述】:

我有一个有序列表和一个无序列表,我试图弄清楚如何根据 unordered_list 对有序列表的顺序进行排序。我尝试使用两个列表中每个元素的索引,但没有成功。所以,我猜有人遇到过类似的问题,或者可以告诉我需要执行什么功能。

unordered_list = ['North_America', 'Europe', 'Asia', 'Antarctica',  'Australia', 'Africa']

ordered_list =   ['Africa.jpg', 'Asia.jpg', 'Antarctica.jpg', 'Australia.jpg', 'Europe.jpg', 'North_America.jpg']

# I want to reorder the list in this manner for this case: [5,4,1,2,3,1]

想要的输出:

ordered_list = ['North_America.jpg', 'Europe.jpg', 'Asia.jpg', 'Antarctica.jpg',  'Australia.jpg', 'Africa.jpg']

【问题讨论】:

  • [a for b,a in sorted(zip(unordered_list,ordered_list))]
  • [s + '.jpg' for s in unordered_list]
  • @Sujay 导致顺序错误。
  • @KellyBundy 这看起来又好又容易!

标签: python sorting indexing


【解决方案1】:

这是输出:

['North_America.jpg', 'Europe.jpg', 'Asia.jpg', 'Antarctica.jpg',  'Australia.jpg', 'Africa.jpg']

代码如下:

unordered_list = ['North_America', 'Europe', 'Asia', 'Antarctica',  'Australia', 'Africa']
ordered_list =   ['Africa.jpg', 'Asia.jpg', 'Antarctica.jpg', 'Australia.jpg', 'Europe.jpg', 'North_America.jpg']

corrected_list = []

for x in unordered_list:
    for y in range(len(ordered_list)):
        if x in ordered_list[y]:
            corrected_list.append(ordered_list[y])
            break
            
print(corrected_list)

【讨论】:

  • 为什么不for y in ordered_list
  • @KellyBundy 在我的脑海中不知何故,那行不通。但我没试过哈哈
猜你喜欢
  • 2017-05-23
  • 2016-05-14
  • 2014-11-29
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多