のPython 3へのPython 2から、このリストのソート機能を変換します:どのように私はポートにしようとすると、それは、Python 2 KEY2</p> <p>を求めてエラーを出し、それ
def SortItems(self,sorter=cmp):
items = list(self.itemDataMap.keys())
items.sort(sorter)
self.itemIndexMap = items
self.Refresh()
のPython 3:
try:
cmp
except NameError:
def cmp(x, y):
if x < y:
return -1
elif x > y:
return 1
else:
return 0
def SortItems(self,sorter=cmp):
items = list(self.itemDataMap.keys())
items.sort(key=sorter)
self.itemIndexMap = items
self.Refresh()
エラーを取得:
items.sort(key=sorter)
TypeError: __ColumnSorter() missing 1 required positional argument: 'key2'
ラムダ関数が2番目の引数を必要としているようです どのように動作させるか考えていますか?私は、整数ではない文字列
をソートしていますので、おそらく
items= sorted(items, key=cmp_to_key(locale.strcoll))
TypeError: strcoll() argument 1 must be str, not int
どのように私はそれがint型のために動作させるん:
def SortItems(self):
import locale
items = list(self.itemDataMap.keys())
items= sorted(items, key=cmp_to_key(locale.strcoll))
self.itemIndexMap = items
self.Refresh()
取得エラー:
もfunctools.cmp_to_keyを試してみましたか?
は、それを試みた別のエラーが発生します。 TypeError:strcoll()引数1は、intではなくstrでなければなりません。私は整数をソートしています。どのように整数のためにそれを使用する任意のアイデア? – olekb
何ですか?なぜあなたは 'strcoll'関数を使って整数を比較していますか?私はあなたが何をしようとしているのか理解していません。 –