2 回答
TA贡献1812条经验 获得超5个赞
你可以试试这个。但是,在不受信任的字符串上使用是危险的。eval
In [63]: a=['1 + 1', '1 + 7', '1 + 5', '1 + 4']
In [69]: def evaluate(_str):
...: return eval(_str.replace('x','*'))
输出
In [70]: sorted(a,key=evaluate)
Out[70]: ['1 + 1', '1 + 4', '1 + 5', '1 + 7']
In [71]: sorted(['4 - 4', '2 - 2', '5 - 5', '10 - 10'],key=evaluate)
Out[71]: ['4 - 4', '2 - 2', '5 - 5', '10 - 10']
In [72]: sorted(['2 + 2', '2 - 2', '2 x 1'],key=evaluate)
Out[72]: ['2 - 2', '2 x 1', '2 + 2']
TA贡献1852条经验 获得超1个赞
我不认为这是你的代码的问题,可能是他们正在使用一些更旧的东西,它搞乱了字典的顺序。元组会更安全。3.6
def sort_by_answer(lst):
string = ','.join(lst).replace('x','*')
l = string.split(',')
d = [(k.replace('*','x'), eval(k)) for k in l]
ans = [expr for expr, value in sorted(d, key = lambda x: x[1])]
return ans
def sort_by_answer(lst): return sorted(lst, key= lambda x: eval(x.replace('x','*')))
添加回答
举报