2016-12-22 2 views
0

私はpython 2.6からpython 3.5.2にアップグレードしています。そして、私はpython 3.5.2に変更し、ほぼすべての変更を修正しました。今私はリストをソートする際に問題に直面している。lamba acception 2のパラメータを持つlist.sort

次のように私の以前のコードは次のとおりです、この上記のコードは、Python 2.6では正常に動作

somelist_variable = [{"idx" : 9, "name": "Syed"}, {"idx": 2, "name": "Mex"}] 
somelist_variable.sort(lambda a, b: int(a.get("idx")) - int(b.get("idx"))) 

しかし、それはエラーのpython 3.5.2を与えている、私は2つのパラメータを渡す場所の多くをチェックしてlambaしかし私は何も見つけることができませんでした。あなたの誰もがそれで私を助けることができますか?

ありがとうございました。

+2

http://stackoverflow.com/questions/20202418/why-is-the-cmp-parameter-removed-from-sort-sorted-in-python3-0 – user3159253

答えて

1

での作品はオーケー、Uはuが欲しいものを説明することができますでしょうか? Uはちょうどuは書くべき "IDX" キーワード引数によってsomelist_variableソートしたい場合:

somelist_variable.sort(key=lambda a: int(a.get("idx"))) 

または高度

from operator import itemgetter 
somelist_variable.sort(key=itemgetter('idx')) 
+0

申し訳ありませんが、idxキーは常に整数です、あなたはint()関数なしで並べ替えを使用することができます –

0

これはあなたのケース

somelist_variable = sorted(somelist_variable, key = lambda x: x.get("idx")) 
0

機能を一つだけ引数を取る必要があります。要素が配置される、リスト内の以前のバージョンでは、戻り値より小さい:また

somelist_variable.sort(key=lambda a: int(a.get("idx"))) 

、明示的list.sortへの引数がキーであることを指定する必要があります。

関連する問題