Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_List_Sorting_Tuples - Fatal编程技术网

Python 如何对表示元组的字符串列表进行排序?

Python 如何对表示元组的字符串列表进行排序?,python,string,list,sorting,tuples,Python,String,List,Sorting,Tuples,我有一个表示元组的字符串列表,如下所示: ['(q2,0)', '(q3,0)', '(q0,0)', '(q1,0)', '(q4,0)'] 有没有办法通过访问每个q后面的数字对其进行排序,以便列表如下所示: [ '(q0,0)', '(q1,0)', '(q2,0)', '(q3,0)', '(q4,0)'] 如果这些是整数就很容易了,但是我需要保持字符串格式现在的样子…您可以根据定义的键进行排序: def my_key(value): return int(value.stri

我有一个表示元组的字符串列表,如下所示:

['(q2,0)', '(q3,0)', '(q0,0)', '(q1,0)', '(q4,0)']
有没有办法通过访问每个q后面的数字对其进行排序,以便列表如下所示:

[ '(q0,0)', '(q1,0)', '(q2,0)', '(q3,0)', '(q4,0)']

如果这些是整数就很容易了,但是我需要保持字符串格式现在的样子…

您可以根据定义的键进行排序:

def my_key(value):
    return int(value.strip('()').split(',')[0][1:])
用法:

>>> values = ['(q2,0)', '(q3,0)', '(q0,0)', '(q1,0)', '(q4,0)']
>>> values.sort(key=my_key)
['(q0,0)', '(q1,0)', '(q2,0)', '(q3,0)', '(q4,0)']

您可以先拆分字符串,然后使用
strip
”(q)通过提供“key”函数自定义排序

结果

['(q0,0)',(q1,0)',(q2,0)',(q3,0)',(q4,0)']


[1:]
在多个数字的情况下更有意义吗?是的,这肯定会谢谢你,这真的很有帮助。不是重复。不管标题如何,这不是一个元组列表,而是一个需要元组化的字符串列表。话说回来,@nanachan如果你问如何在python中将字符串列表拆分为元组列表,那么请查看dupe链接,你应该得到排序。
lst = ['(q12,0)', '(q3,0)', '(q0,0)', '(q1,0)', '(q4,0)']    
sorted(lst, key=lambda item: int(item.partition(',')[0].strip('(q')))
# '(q0,0)', '(q1,0)', '(q3,0)', '(q4,0)', '(q12,0)']
lt = ['(q2,0)', '(q3,0)', '(q0,0)', '(q1,0)', '(q4,0)']
lt.sort(key=lambda st : int(st[2]) )
print(lt)
#st = '(q2,0)'
#st[2] = '2'
#int(st[2]) = 2