我正在尝试根据某些值对列表进行排序。我知道如何根据整数和字符串排序(按字母顺序)。虽然,当涉及到由数学符号构成的物体时,我无法做到。
我有这个清单......
ls = ["Arsenal",10-5,10,"Chelsea",20-5,10]
我对此进行排序:
newLs = sorted([ls[i:i+3] for i in range(0,len(ls),3)],key=lambda x:(int(x[2]),int(x[1]))
我希望10-5
被视为5
,但后来在打印时显示为10-5
后期打印示例:
Arsenal 10-5 10
Chelsea 20-5 10
答案 0 :(得分:1)
我明白了!
使用eval(x[2])
等。此外,围绕它需要括号(使其成为元组):(eval(x[2]),eval(x[1]))
ls = ["Arsenal","10-5","10","Chelsea","20-5","0+25"]
newLs = sorted([ls[i:i+3] for i in range(0,len(ls),3)],key= lambda x: (eval(x[2]),eval(x[1])))
print(newLs)
在此处运行:http://ideone.com/Jcu5b0