繁体   English   中英

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

[英]How can I sort a list of strings representing 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.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)']

你可以在第一个“,”分割字符串,使用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)']
lt = ['(q2,0)', '(q3,0)', '(q0,0)', '(q1,0)', '(q4,0)']
lt.sort(key=lambda st : int(st[2]) )
print(lt)

结果

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

#st = '(q2,0)'
#st[2] = '2'
#int(st[2]) = 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM