我的任務是定義一個函式,該函式接受一個名稱串列并回傳一個名稱字典 每個字串(名稱)的相應長度。代碼作業得很好:
def toDict(namelist):
lengths = []
for i in namelist:
lengths.append(len(i))
namedict = dict(zip(namelist, lengths))
return namedict
print(namedict)
然而,任務的第二部分是只在一行中完成,我有點卡在那里......請幫忙。
uj5u.com熱心網友回復:
一種方法是使用dict理解:
namedict = {name: len(name) for name in namelist}
如果您需要將整個函式定義放在一行上,我建議使用 lambda:
to_dict = lambda name_list: {n: len(n) for n in name_list}
正如評論中所提到的,盡管我個人更喜歡 lambda 方法 - 盡管我覺得這是一個可靠的用例 - 仍然可以使用 adef并在一行中具有正常功能;您只需要將 body 立即放在冒號之后:,如下所示。
def to_dict(name_list): return {n: len(n) for n in name_list}
uj5u.com熱心網友回復:
其它的辦法:
>>> li = ['one', 'three', 'four']
>>> dict(zip(li, map(len, li)))
{'one': 3, 'three': 5, 'four': 4}
這個怎么運作:
map將函式應用于中的len每個元素lizip形成名稱和長度的元組dict接受元組并形成字典。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318283.html
