繁体   English   中英

如何使用整数对另一个列表进行排序

[英]How to sort a list based on another list with integers Python

因此,我通常是编程新手,我只是想知道是否有可能不根据另一个列表的位置而是实际的整数本身对列表进行排序?

#Here is my list to be sorted
sent = ['Ho','Hi','Hi','Ho','Hi','Ho','!','Hi']

#The positions I will sort by
pos = [1, 2, 2, 1, 1, 1, 3]

#The output I want is
sortlst = ['Hi','Ho','Ho','Hi','Hi','Hi','Ho','!']

我尝试搜索解决此问题的方法,但找不到任何方法。 列表推导等已经能够调用send中的元素,但是不能通过pos的实际整数,而是位置。

for i in pos:
    T.append(sent[i])
recreate = " ".join(T) 
print (recreate)

运行此段将输出:

Ho Ho Ho Ho Ho Ho Ho Hi

任何帮助将不胜感激!

您可以尝试类似的方法:

sent = ['Hi', 'Ho', '!']
pos = [1, 2, 2, 1, 1, 1, 3]
recreate = [sent[i - 1] for i in pos]
print(recreate)
# ['Hi', 'Ho', 'Ho', 'Hi', 'Hi', 'Hi', '!']

但是,这需要您用“符号”(在此为sent = ['Hi', 'Ho', '!'] )描述表,并按数字顺序对其进行匹配。 1代表“嗨”,2代表“ Ho”,3代表“!”,依此类推。

我将为我提出的解决方案做一些假设。

  • pos有7个元素,而sortlst有8个元素。我认为这是一个错字。
  • 您将sent每个唯一元素与基于其排序值的整数相关联。 但是请注意,您对“!”进行了排序 作为“豪” ,即使它是在字典序之前 除非您提出其他选择,否则我将按字典顺序使用。

因此, post = [1,2,3]告诉我:

给我一个数组,其中包含sent的第一个,第二个和第三个唯一的排序值。

牢记此定义:

>>> sent = ['Ho','Hi','Hi','Ho','Hi','Ho','!','Hi']
>>> pos = [1, 2, 2, 1, 1, 1, 3]
>>> elements = sorted(set(sent))
>>> elements
['!', 'Hi', 'Ho']
>>> [elements[i - 1] for i in pos]
['!', 'Hi', 'Hi', '!', '!', '!', 'Ho']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM