字典中找不到對應的鍵的處理方法
阿新 • • 發佈:2022-04-05
def Count_word(file_name): # 編譯正則表示式模式,查詢所有字母(>=1) word_re = re.compile(r'\w+') # 定義索引字典 index = {} # index = collections.defaultdict(list) with open(file_name, encoding='utf-8') as fp: # 遍歷檔案 從第一行開始 enimerate(sequence, startindex) # 行號 行內容 for line_no, line inenumerate(fp, 1): # 每行內容查詢,返回迭代器 for match in word_re.finditer(line): # 返回匹配到的字串 word = match.group() # 行中匹配到的index(預設為0) + 1 column_no = match.start() # 行號 行中出現的索引開始位置 location = (line_no, column_no)# 列表中查詢不到鍵的第一種處理方式 # 查詢index字典中是否存在word,不存在把 word [] 放入index{} occurrences = index.get(word, []) occurrences.append(location) index[word] = occurrences # 列表中查詢不到鍵的第二種處理方式 # setdefault index.setdefault(word, []).append(location)# # 第三種處理方式 defaultdict # 將list構造方法作為字典中預設的元素形式 index = collections.defaultdict(list) # 如果字典中找不到word,上面一句就會被呼叫,為查詢不到的word建立一個值(空列表) index[word].append(location) for word in sorted(index, key=str.upper): print(word, index[word]) Count_word('zen.txt')