當我嘗試將它移植它的錯誤了,要求爲key2如何轉換這個列表排序功能在Python 2到Python 3
的Python 2:
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'
它看起來像lambda函數需要第二個參數 任何想法如何使其工作?
也試過functools.cmp_to_key:
def SortItems(self):
import locale
items = list(self.itemDataMap.keys())
items= sorted(items, key=cmp_to_key(locale.strcoll))
self.itemIndexMap = items
self.Refresh()
四處錯誤:
items= sorted(items, key=cmp_to_key(locale.strcoll))
TypeError: strcoll() argument 1 must be str, not int
可能是因爲我整理整數不是字符串
如何使其成爲INT工作?
試了一下,給出了不同的錯誤。 TypeError:strcoll()參數1必須是str,而不是int。我正在整理整數。任何想法如何使用它的整數? – olekb
什麼?你爲什麼使用'strcoll'函數來比較整數?我不明白你在做什麼。 –