最常见的方法:
words = ['apple','bat','bar','atom','book']
by_letter = {}
for word in words:
letter = word[0]
if letter in by_letter:
by_letter[letter].append(word)
else:
by_letter[letter] = [word]
by_letter
setdefault: dict.setdefault(key, default=None)
如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。
words = ['apple','bat','bar','atom','book']
by_letter = {}
for word in words:
letter = word[0]
by_letter.setdefault(letter,[]).append(word)
by_letter
collections.defaultdict
普通的字典用法一般是dict={},添加元素的只需要dict[element] =value,调用的时候也是如此,dict[element] = xxx,但前提是element字典里,如果不在字典里就会报错。
defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值。这个by_letter = defaultdict(list)可以是list、set、str等等,作用是当key不存在时,返回默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0。
words = ['apple','bat','bar','atom','book']
by_letter = {}
from collections import defaultdict
by_letter = defaultdict(list)
for word in words:
by_letter[word[0]].append(word)
by_letter