Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Sorting - Fatal编程技术网

Python 如何对包含间隔但采用字符串格式的列表进行排序

Python 如何对包含间隔但采用字符串格式的列表进行排序,python,sorting,Python,Sorting,我有一个字符串列表,它们最初是interval,我必须将它们转换为string。现在我想根据元组中的第一个数字对列表进行排序 输入列表: in_lst = ['(-100, 20)', '(100, 200)', '(20, 100)'] 当我使用以下代码时: sorted(in_lst) 它返回以下内容: ['(-100, 20)', '(100, 200)', '(20, 100)'] 而预期的产出是 ['(-100, 20)', '(20, 100)', '(100, 200)']

我有一个字符串列表,它们最初是interval,我必须将它们转换为string。现在我想根据元组中的第一个数字对列表进行排序

输入列表:

in_lst = ['(-100, 20)', '(100, 200)', '(20, 100)']
当我使用以下代码时:

sorted(in_lst)
它返回以下内容:

['(-100, 20)', '(100, 200)', '(20, 100)']
而预期的产出是

['(-100, 20)', '(20, 100)', '(100, 200)']
此外,我将能够处理包含性边界,如下所示:

['(-100, 20)', '(100, 200)', '(20, 100)']
['-100, 20]', '100, 200]', '20, 100]']
如果需要同时使用包含边界和独占边界的intevals,可以使用及其功能:

进口部分 部分。从_字符串'-100,20]',conv=int -100,20] 此函数提供处理INTERVAL的结构,这些结构可以进行比较:

间隔_1=部分。从_字符串'-100,20]',conv=int 间隔_2=部分。从_字符串'100200]',conv=int printinterval_1=interval_2 False 因此,通过将字符串转换为区间结构,可以对它们进行排序。为方便起见,您可能需要一个函数来处理此转换,您可以将该函数传递给排序函数:

l=['-10020]'、'100200]'、'20100]'] def字符串\u至\u间隔: def key_funcstring: 返回部分.from_stringstring,conv=conv 返回键函数 printsortedl,key=string\u to\u intervalint ['-100, 20]', '20, 100]', '100, 200]'] 如果您的间隔边界是浮动的,您可以使用sortedl,key=string\u to\u intervalfloat代替

如果只需要使用独占边界,则可以使用将字符串安全地转换为元组:

导入ast in_lst=['-100,20',100,200',20,100'] tuples=mapast.literal\u eval,单位为 然后,您只需对元组列表进行排序:

打印排序的数据偶 [-100, 20, 20, 100, 100, 200] 如果要保留字符串,还可以提供ast.literal\u eval作为函数的比较键:

printsortedin\u lst,key=ast.literal\u eval ['-100, 20', '20, 100', '100, 200'] 甚至是现有的清单:

in_lst.sortkey=ast.literal_eval 打印输入 ['-100, 20', '20, 100', '100, 200'] 您可以使用ast.literal\u eval作为排序键

>>> import ast
>>> in_lst = ['(-100, 20)', '(100, 200)', '(20, 100)']
>>> 
>>> sorted(in_lst, key=ast.literal_eval)
['(-100, 20)', '(20, 100)', '(100, 200)']

你想按什么分类?元组中的第一个数字?为什么必须是字符串?将它们作为元组更有意义?是的,元组中的第一个数字@bigbounty-我建议使用ast.literal_eval来代替eval。如果输入列表是这样的['-100,20]'、'100,200]'、'20,100]'],情况如何?