当我按列表(元组)中的第一个和第二个元素排序时,它有效,但按第三个元素排序不再有效 输入:
mylist=[('11', '82075.36', '8.15'), ('16', '82073.78', '12.92'), ('13', '62077.99', '17.89'),]
请求:
print(sorted(mylist, key=lambda val: val[0]))
print(sorted(mylist, key=lambda val: val[1]))
print(sorted(mylist, key=lambda val: val[2]))
和输出:
[('11', '82075.36', '8.15'), ('13', '62077.99', '17.89'), ('16', '82073.78', '12.92')] # it is OK
<小时/>
[('13', '62077.99', '17.89'), ('16', '82073.78', '12.92'), ('11', '82075.36', '8.15')] # it is OK`
<小时/>
[('16', '82073.78', '12.92'), ('13', '62077.99', '17.89'), ('11', '82075.36', '8.15')] # this seems to be not correct, can anybody explain why?
如果我从第三个 elm 中删除引号,它就可以工作,无论如何,对于 elm 1 来说,它可以在不删除引号的情况下工作
mylist=[('11', '82075.36', 8.15), ('16', '82073.78', 12.92), ('13', '62077.99', 17.89),]
和输出:
[('11', '82075.36', 8.15), ('16', '82073.78', 12.92), ('13', '62077.99', 17.89)]
最佳答案
您要求对字符串进行排序,因此您正在进行字符串排序。试试这个:
print(sorted(mylist, key=lambda val: int(val[0])))
print(sorted(mylist, key=lambda val: float(val[1])))
print(sorted(mylist, key=lambda val: float(val[2])))
即将排序键更改为数字。
关于python - lambda排序列表奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35245850/