參考鏈接:https://blog.csdn.net/yangsong95/article/details/82319675
Python中通過(guò)Key訪問(wèn)字典,當(dāng)Key不存在時(shí)旦棉,會(huì)引發(fā)‘KeyError’異常。為了避免這種情況的發(fā)生,可以使用collections類中的defaultdict()方法來(lái)為字典提供默認(rèn)值。
語(yǔ)法格式:
collections.defaultdict([default_factory[, …]])
該函數(shù)返回一個(gè)類似字典的對(duì)象涵亏。defaultdict是Python內(nèi)建字典類(dict)的一個(gè)子類辕羽,它重寫(xiě)了方法missing(key),增加了一個(gè)可寫(xiě)的實(shí)例變量default_factory,實(shí)例變量default_factory被missing()方法使用搪花,如果該變量存在,則用以初始化構(gòu)造器嘹害,如果沒(méi)有鳍侣,則為None。其它的功能和dict一樣吼拥。
第一個(gè)參數(shù)為default_factory屬性提供初始值倚聚,默認(rèn)為None;其余參數(shù)包括關(guān)鍵字參數(shù)(keyword arguments)的用法凿可,和dict構(gòu)造器用法一樣惑折。
1. 使用list作為default_factory參數(shù)
- value值是列表類型
- 沒(méi)有對(duì)應(yīng)的key就返回空列表
- 可以使用.append() 將值添加進(jìn)已有的value list
def group_anagrams(strs:list):
res = collections.defaultdict(list)
for st in strs:
key = "".join(sorted(st)) #為什么要加join授账,因?yàn)閟tr排序后會(huì)變成列表['a','e','t']
# print(key)
res[key].append(st)
return res
strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
# 輸出: [["bat"],["nat","tan"],["ate","eat","tea"]]