List Python-具有字符串对象的排序列表

List Python-具有字符串对象的排序列表,list,python-3.x,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 稍后打印的

我试图根据一些值对列表进行排序。我知道如何按整数和字符串(字母顺序)排序。虽然,当涉及到由数学符号构成的对象时,我不能完全做到这一点

我有这个名单

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
我知道了

使用
eval(x[2])
等等。此外,它周围还需要括号(使其成为元组):
(eval(x[2]),eval(x[1])


在此处运行:

我发现lambda部分出现语法错误。不能使用逗号和第二部分。删除
,int(x[1])
并运行它。此外,在列表
ls
声明中,在数字元素周围加引号
ls=[“阿森纳”、“10-5”、“10”、“切尔西”、“20-5”、“10”
它可以工作,但我想先按x[2]排序,然后按x[1]。有两个条件。问题是x[1]的格式(是a-b而不是整数)。我希望能够将数字相加。比如10-5=5,所以5小于20-5=15。你明白吗?让我知道我下面的解决方案是否适用于你。函数
eval
从字符串解释表达式,而不是试图将表达式解析为整数,这会导致错误。伙计,我会投票给你100000000的答案泰晤士报。你刚刚成就了我的一天!这真是天才!非常感谢你的回答!我很高兴我找到了它!我只找到了错误所在,因为我试图使用repl.it(使用Python 2.7),它给出了一个更详细的错误。Ideone刚刚说了“运行时错误”
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)