我有代表的元組,像這樣的字符串列表:如何排序表示元組的字符串列表?
['(q2,0)', '(q3,0)', '(q0,0)', '(q1,0)', '(q4,0)']
有什麼辦法由每個Q後訪問數進行排序,所以該列表看起來像這樣:
[ '(q0,0)', '(q1,0)', '(q2,0)', '(q3,0)', '(q4,0)']
這將是容易,如果這些都是整數,但我需要保持字符串格式像現在這樣......
我有代表的元組,像這樣的字符串列表:如何排序表示元組的字符串列表?
['(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
不是一個笨蛋。無論標題如何,這不是一個元組列表,它是一個需要元組化的字符串列表。話雖如此,@nanachan如果你問如何將一個字符串列表拆分成一個python中的元組列表,然後查看這個dupe鏈接,你應該進行排序。 – mcalex