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