當前位置:成語大全網 - 書法字典 - 字典快速排序

字典快速排序

應該是妳用錯了排序方式。它可以對name.key的形式進行排序

班級?男:

def?__init__(自己,姓名,id):

self.name=name

self.id=id

@屬性

def?關鍵(自身):

回歸?自我名稱

def?len(self):

回歸?len(自己的名字)

def?_ _ str _ _(self):

回歸?{ { \‘name \‘:\‘{ 0 } \‘,\‘id \‘:{ 1 } }‘?\

。格式(自我名稱,自我id)?

__repr__?=?__str__

s?=?【m(‘zzzz’,1),m(‘AAA’,4)】

l?=?【(‘源‘,?s),

]

#?直接屬性排序

l . append((‘by?名稱‘,?已排序(s,?key =λ?x:?x.name))

l . append((‘by?id‘,?已排序(s,?key =λ?x:?x.id))

#?屬性函數排序

l . append((‘by?密鑰‘,?已排序(s,?key =λ?x:?x.key))

#?功能分類

l . append((‘by?len()‘,?已排序(s,?key =λ?x:?x.len())))

為了什麽?e?在?l:

打印(e【0】)

打印(e【1】)這是輸出結果:

來源

【{‘name’:‘zzzz’,id:1 },?{“name“:“AAA“,“id“:4 }】

被誰?名字

【{‘name‘:‘AAA‘,id:4 },?{“name“:“zzzz“,“id“:1 }】

被誰?身份證明(identification)

【{‘name’:‘zzzz’,id:1 },?{“name“:“AAA“,“id“:4 }】

被誰?鍵

【{‘name‘:‘AAA‘,id:4 },?{“name“:“zzzz“,“id“:1 }】

被誰?len()

【{‘name‘:‘AAA‘,id:4 },?{‘name’:‘zzzz’,‘id’:1 }】以上四種用法都可以,name【key】的形式也可以。

排序參數鍵,它是壹個函數,簡單點的話可以直接用lambda,復雜點的話可以用壹個參數定義為壹個函數,例如:

def?已排序_其他(項目):

如果?hasattr(item,?姓名):

回歸?項目。名稱

否則:

回歸?沒有人

l . append((‘by?其他?func,?已排序(s,?key=sorted_other))