亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當key是一個自定義函數時,怎么往這個函數傳入參數,

當key是一個自定義函數時,怎么往這個函數傳入參數,

慕碼人2483693 2022-08-04 15:11:23
例子:import itertoolsdef groupnames(name_iterable):print(name_iterable)sorted_names = sorted(name_iterable, key=_sortkeyfunc)name_dict = { }for key, group in itertools.groupby(sorted_names, _groupkeyfunc):name_dict[key] = tuple(group)return name_dictpieces_order = { 2: (-1, 0), 3: (-1, 0, 1) }def _sortkeyfunc(name):''' name is a string with first and last names, and an optional middlename or initial, separated by spaces; returns a string in orderlast-first-middle, as wanted for sorting purposes. '''print(name)name_parts = name.split( )return ' '.join([name_parts[n] for n in pieces_order[len(name_parts)]])def _groupkeyfunc(name):''' returns the key for grouping, i.e. the last name's initial. '''return name.split( )[-1][0]輸出結果卻是這樣 應該兩個都是Bnthony Hall啊,為什么第二個會變成B了>>> groupnames('Bnthony Hall')Bnthony HallB
查看完整描述

2 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

sorted('Bnthony Hall', key=_sortkeyfunc)
這個是對字符串'Bnthony Hall'中字符排序,字符排序當然要逐字符比較,傳給比較函數_sortkeyfunc的當然是字符串中字符

查看完整回答
反對 回復 2022-08-08
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

Python幫助文檔中對sorted方法的講解:
sorted(iterable[,cmp,[,key[,reverse=True]]])
作用:返回一個經過排序的列表。
第一個參數是一個iterable,返回值是一個對iterable中元素進行排序后的列表(list)。
可選的參數有三個,cmp、key和reverse。
1)cmp指定一個定制的比較函數,這個函數接收兩個參數(iterable的元素),如果第一個參數小于第二個參數,返回一個負數;如果第一個參數等于第二個參數,返回零;如果第一個參數大于第二個參數,返回一個正數。默認值為None。
2)key指定一個接收一個參數的函數,這個函數用于從每個元素中提取一個用于比較的關鍵字。默認值為None。
3)reverse是一個布爾值。如果設置為True,列表元素將被倒序排列。
key參數的值應該是一個函數,這個函數接收一個參數并且返回一個用于比較的關鍵字。對復雜對象的比較通常是使用對象的切片作為關鍵字。例如:
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda s: s[2]) #按年齡排序
# [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]


查看完整回答
反對 回復 2022-08-08
  • 2 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號