摘要:當字典找不到正確的鍵時會拋出異常有沒有一種優雅的方法來避免這種情況呢答案是肯定的從索引中獲取單詞出現的頻率信息并寫入列表沒有使用執行使用了只用了一行就解決了獲取和更新單詞的出現情況列表也就是說等價于二者效果相同只是只
當字典 d[k]找不到正確的鍵時,Python會拋出異常,有沒有一種優雅的方法來避免這種情況呢?答案是肯定的. index0.py 從索引中獲取單詞出現的頻率信息,并寫入列表 --沒有使用dict.setdefault
#!/usr/bin/env python # coding=utf-8 import sys, re WORD_RE = re.compile(r"w+") index = {} with open(sys.argv[1], encoding="utf-8") as fp: for line_no, line in enumerate(fp, 1): for match in WORD_RE.finditer(line): word = match.group() column_no = match.start()+1 location = (line_no, column_no) occurrences = index.get(word, []) occurrences.append(location) index[word] = occurrences for word in sorted(index, key=str.upper): print(word, index[word])zen.txt
The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren"t special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you"re Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it"s a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let"s do more of those!執行 python3 index0.py zen.txt
a [(19, 48), (20, 53)] Although [(11, 1), (16, 1), (18, 1)] ambiguity [(14, 16)] and [(15, 23)] are [(21, 12)] aren [(10, 15)] at [(16, 38)] bad [(19, 50)] be [(15, 14), (16, 27), (20, 50)] beats [(11, 23)] Beautiful [(3, 1)] better [(3, 14), (4, 13), (5, 11), (6, 12), (7, 9), (8, 11), (17, 8), (18, 25)] break [(10, 40)] by [(1, 20)] cases [(10, 9)] ...index.py 使用了dict.setdefault 只用了一行就解決了獲取和更新單詞的出現情況列表
#!/usr/bin/env python # coding=utf-8 import sys, re WORD_RE = re.compile(r"w+") index = {} with open(sys.argv[1], encoding="utf-8") as fp: for line_no, line in enumerate(fp, 1): for match in WORD_RE.finditer(line): word = match.group() column_no = match.start()+1 location = (line_no, column_no) index.setdefault(word, []).append(location) for word in sorted(index, key=str.upper): print(word, index[word])也就是說:
my_dict.setdefault(key, []).append(new_value)等價于
if key not in my_dict: my_dict[key] = [] my_dict[key].append(new_value)二者效果相同,只是setdefault只需一次就完成整個操作,而后者需要進行兩次查詢
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42443.html
摘要:元組元祖為不可被修改的列表,不可變類型基本操作索引切片循環長度包含以下為詳細介紹查找元素個數獲取元祖中第一個元素的索引位置字典根據值去對應的取不到值返回,不報錯清空拷貝淺拷貝刪除并獲取對應的值隨機刪除鍵值對,并獲取到刪除的鍵值增加,如果值存 元組(tuple) 元祖為不可被修改的列表,不可變類型 基本操作: 索引 切片 循環 長度 包含 以下為詳細介紹 ~ count 查找元素個...
摘要:在代碼中可以看到一些常見的,在這里做一個簡單的小結。的妙用在某些場景下我們需要判斷我們是否是從一個循環中跳出來的,并且只針對跳出的情況做相應的處理。這時候我們通常的做法是使用一個變量來標識是否是從循環中跳出的。 在 python 代碼中可以看到一些常見的 trick,在這里做一個簡單的小結。 json 字符串格式化 在開發 web 應用的時候經常會用到 json 字符串,但是一段比...
摘要:如果要把一個對象放入散列表,那么首先要計算這個元素的散列值。總結這一篇主要介紹了常見的字典方法如何處理查不到的鍵標準庫中類型的變種散列表的工作原理散列表帶來的潛在影響參考鏈接最后,感謝女朋友支持。 這一篇是《流暢的 python》讀書筆記。主要介紹: 常見的字典方法 如何處理查不到的鍵 標準庫中 dict 類型的變種 散列表的工作原理 泛映射類型 collections.abc...
摘要:問題怎樣實現一個鍵對應多個值的字典也叫例如解決方案使用模塊中的類的特點是,當不存在時,會自動創建它,也就是說我們不用再像一樣首先判斷是否存在了,下面是一個例子當然,也可以用的函數來實現同樣的效果,但看起來會比較丑陋討論根據官方文檔對的介紹可 問題 怎樣實現一個鍵對應多個值的字典(也叫 multidict)? 例如: d = { a : [1, 2, 3], b : [4...
摘要:列表列表是中使用最頻繁的數據類型。列表可以完成大多數集合類的數據結構實現。注意構造包含或個元素的元組的特殊語法規則。基本功能是進行成員關系測試和刪除重復元素。以下幾個內置的函數可以執行數據類型之間的轉換。 一、說明 Python 中的變量不需要聲明。每個變量在使用前都必須賦值,變量賦值以后該變量才會被創建。在 Python 中,變量就是變量,它沒有類型,我們所說的類型是變量所指的內存中...
閱讀 2315·2021-09-22 15:27
閱讀 3170·2021-09-03 10:32
閱讀 3499·2021-09-01 11:38
閱讀 2499·2019-08-30 15:56
閱讀 2213·2019-08-30 13:01
閱讀 1536·2019-08-29 12:13
閱讀 1418·2019-08-26 13:33
閱讀 893·2019-08-26 13:30