【发布时间】:2021-03-30 00:44:51
【问题描述】:
Python: 我有一个具有以下结构的一维列表(每个条目都是由空格分隔的整数字符串):
vals = ["121",
"121 122",
"122",
"122 124",
"150",
"171",
"49",
"49 122",
"49 122" "124",
"49 122" "516",
"51",
"51 122",
"516",
"8",
"8 122" "516",
"8 124",
"8 171",
"8 49",
"8 49" "124",
"8 49" "516",
"8 51",
"8 51" "122",
"8 516",
"878",
]
但我正在寻找关于两行和列顺序中每个整数的排序顺序,即预期输出是
vals = [
"8",
"8 49",
"8 49 124",
"8 49 516",
"8 51",
"8 51 122",
"49",
"49 122",
"49 122 124",
"49 122 516",
"51",
"51 122",
"121",
"121 122",
"122",
"122 124",
"150",
"171",
"516",
"878",
]
我尝试过使用sort() 和sorted() 机制,但似乎没有任何效果
sort_len = list1.sort(key = int) --> 这是抛出值错误,因为每个列表都是一串分隔的字母。
我想按行值对这个列表进行排序,即一行中的第一个整数(如果行值相同,即第一个整数相同,则转到下一列)
【问题讨论】:
-
可以假设每一行都是列排序的,即每一行都是列排序的
-
key=lambda x: tuple(map(int, x.split()))可能会起作用 -
它仍然抛出错误:list1.sort(key = lambda x: tuple(map(int, x.split(',')))) ValueError: invalid literal for int() with基数 10:'39 41 48'
-
@ManojS - x.split() 不是 x.split(',')
-
相同但不同
key = lambda x: [int(n) for n in x.split()]
标签: python python-3.x string list python-2.x