Python - 对包含字符串对象的列表进行排序

时间:2015-01-05 20:14:16

标签: list python-3.x

我正在尝试根据某些值对列表进行排序。我知道如何根据整数和字符串排序(按字母顺序)。虽然,当涉及到由数学符号构成的物体时,我无法做到。

我有这个清单......

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

1 个答案:

答案 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