我有一个表示元组的字符串列表,如下所示:
['(q2,0)', '(q3,0)', '(q0,0)', '(q1,0)', '(q4,0)']
有没有办法通过访问每个q后的数字对它进行排序,以便列表如下所示:
[ '(q0,0)', '(q1,0)', '(q2,0)', '(q3,0)', '(q4,0)']
如果这些是整数会很容易,但我需要保持现在的字符串格式......
答案 0 :(得分:4)
您可以根据您定义的键进行排序:
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)']
答案 1 :(得分:0)
您可以使用partition
然后strip
将第一个字符串拆分为“,”{q“通过提供”键“功能来自定义排序
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)']
答案 2 :(得分:0)
lt = ['(q2,0)', '(q3,0)', '(q0,0)', '(q1,0)', '(q4,0)']
lt.sort(key=lambda st : int(st[2]) )
print(lt)
<强>结果强>
[&#39;(q0,0)&#39;,&#39;(q1,0)&#39;,&#39;(q2,0)&#39;,&#39; (q3,0)&#39;,&#39;(q4,0)&#39;]
#st = '(q2,0)'
#st[2] = '2'
#int(st[2]) = 2