Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据python中的另一个列表对列表重新排序_Python - Fatal编程技术网

根据python中的另一个列表对列表重新排序

根据python中的另一个列表对列表重新排序,python,Python,所以问题是我有一个参考列表,它是列的名称。然后用户的列表中可能有不同的项目顺序,因此我想根据我的参考列表重新构造他们的列表。让我们看一个例子: 我们有参考名单 ref = ['meats', 'veggies', 'beers', 'soda'] 所有的清单都应该遵循这一点,首先是肉类,然后是蔬菜,然后是啤酒,然后是苏打水。 所以一个有效的列表可能是 valid_1 = ['beef', 'carrot', 'pilsner', 'cola'] 现在,用户有一个顺序错误的项目列表,但我知道它

所以问题是我有一个参考列表,它是列的名称。然后用户的列表中可能有不同的项目顺序,因此我想根据我的参考列表重新构造他们的列表。让我们看一个例子:

我们有参考名单

ref = ['meats', 'veggies', 'beers', 'soda']
所有的清单都应该遵循这一点,首先是肉类,然后是蔬菜,然后是啤酒,然后是苏打水。 所以一个有效的列表可能是

valid_1 = ['beef', 'carrot', 'pilsner', 'cola']
现在,用户有一个顺序错误的项目列表,但我知道它们的顺序。例如

invalid_1 = ['cucumber', 'stout', 'lamb', 'pepsi']
他们的项目顺序已经给出,所以我知道它的
['vegies','beer','meat','soda']

所以问题是,根据参考列表,将他们的列表变形为我想要的顺序的最快方法是什么


感谢大家的帮助

考虑到这个问题是根据我接受的评论,你可以做:

def arbitrary_sort( values, values_kind, ref_kind ):
   indexed_ref = { k: i for i, k in enumerate(ref_kind) }
   indexed_dic = { indexed_ref[k]: v for v, k in zip(values, values_kind) }
   return [ indexed_dic[i] for i in sorted( indexed_dic ) ]

时间复杂度为O(NlogN),因为前两个操作是线性的,然后我们调用了
排序
函数。

考虑到问题是根据我接受的评论,您可以做:

def arbitrary_sort( values, values_kind, ref_kind ):
   indexed_ref = { k: i for i, k in enumerate(ref_kind) }
   indexed_dic = { indexed_ref[k]: v for v, k in zip(values, values_kind) }
   return [ indexed_dic[i] for i in sorted( indexed_dic ) ]

时间复杂度为O(NlogN),因为前两个操作是线性的,然后我们调用了
排序的
函数。

您在哪里定义类别中的内容
[“肉”、“蔬菜”、“啤酒”、“苏打水”]
?有效列表中的位置,因此我知道有效的[0]根据我的参考,是在“肉类”中,但是你在哪里创建了
“黄瓜”
“蔬菜”
之间的关联?您是否在询问NLP问题,即确定
'cumber'
是否与
'vegies'
相关?python规范或库中没有任何内容可以告诉您stout是一种啤酒。你需要实际的数据,它们是什么是无关紧要的。这只是根据参考列表对无效列表重新排序的问题。我知道用户是如何使用标签排序来排序无效列表的。您在哪里定义类别中的内容?
[‘肉类’、‘蔬菜’、‘啤酒’、‘苏打’]
?在有效列表中的位置,因此我知道有效列表[0]根据我的参考,是在“肉类”中,但是你在哪里创建了
“黄瓜”
“蔬菜”
之间的关联?您是否在询问NLP问题,即确定
'cumber'
是否与
'vegies'
相关?python规范或库中没有任何内容可以告诉您stout是一种啤酒。你需要实际的数据,它们是什么是无关紧要的。这只是根据参考列表对无效列表重新排序的问题。我知道用户是如何使用标签排序的无效列表谢谢,这正是我需要的。谢谢,这正是我需要的。