国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python3 setdefault的妙用

Enlightenment / 1439人閱讀

摘要:當(dāng)字典找不到正確的鍵時(shí)會(huì)拋出異常有沒有一種優(yōu)雅的方法來避免這種情況呢答案是肯定的從索引中獲取單詞出現(xiàn)的頻率信息并寫入列表沒有使用執(zhí)行使用了只用了一行就解決了獲取和更新單詞的出現(xiàn)情況列表也就是說等價(jià)于二者效果相同只是只

當(dāng)字典 d[k]找不到正確的鍵時(shí),Python會(huì)拋出異常,有沒有一種優(yōu)雅的方法來避免這種情況呢?答案是肯定的. index0.py 從索引中獲取單詞出現(xiàn)的頻率信息,并寫入列表 --沒有使用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!
執(zhí)行 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 只用了一行就解決了獲取和更新單詞的出現(xiàn)情況列表
#!/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)
等價(jià)于
if key not in my_dict:
    my_dict[key] = []
my_dict[key].append(new_value)
二者效果相同,只是setdefault只需一次就完成整個(gè)操作,而后者需要進(jìn)行兩次查詢

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/42443.html

相關(guān)文章

  • Python3】基本數(shù)據(jù)類型-元祖(tuple)、字典(dict)

    摘要:元組元祖為不可被修改的列表,不可變類型基本操作索引切片循環(huán)長(zhǎng)度包含以下為詳細(xì)介紹查找元素個(gè)數(shù)獲取元祖中第一個(gè)元素的索引位置字典根據(jù)值去對(duì)應(yīng)的取不到值返回,不報(bào)錯(cuò)清空拷貝淺拷貝刪除并獲取對(duì)應(yīng)的值隨機(jī)刪除鍵值對(duì),并獲取到刪除的鍵值增加,如果值存 元組(tuple) 元祖為不可被修改的列表,不可變類型 基本操作: 索引 切片 循環(huán) 長(zhǎng)度 包含 以下為詳細(xì)介紹 ~ count 查找元素個(gè)...

    Honwhy 評(píng)論0 收藏0
  • Python Tricks 若干

    摘要:在代碼中可以看到一些常見的,在這里做一個(gè)簡(jiǎn)單的小結(jié)。的妙用在某些場(chǎng)景下我們需要判斷我們是否是從一個(gè)循環(huán)中跳出來的,并且只針對(duì)跳出的情況做相應(yīng)的處理。這時(shí)候我們通常的做法是使用一個(gè)變量來標(biāo)識(shí)是否是從循環(huán)中跳出的。 在 python 代碼中可以看到一些常見的 trick,在這里做一個(gè)簡(jiǎn)單的小結(jié)。 json 字符串格式化 在開發(fā) web 應(yīng)用的時(shí)候經(jīng)常會(huì)用到 json 字符串,但是一段比...

    lovXin 評(píng)論0 收藏0
  • Python數(shù)據(jù)結(jié)構(gòu):字典

    摘要:如果要把一個(gè)對(duì)象放入散列表,那么首先要計(jì)算這個(gè)元素的散列值??偨Y(jié)這一篇主要介紹了常見的字典方法如何處理查不到的鍵標(biāo)準(zhǔn)庫中類型的變種散列表的工作原理散列表帶來的潛在影響參考鏈接最后,感謝女朋友支持。 這一篇是《流暢的 python》讀書筆記。主要介紹: 常見的字典方法 如何處理查不到的鍵 標(biāo)準(zhǔn)庫中 dict 類型的變種 散列表的工作原理 泛映射類型 collections.abc...

    BlackFlagBin 評(píng)論0 收藏0
  • Python每日一練0007

    摘要:?jiǎn)栴}怎樣實(shí)現(xiàn)一個(gè)鍵對(duì)應(yīng)多個(gè)值的字典也叫例如解決方案使用模塊中的類的特點(diǎn)是,當(dāng)不存在時(shí),會(huì)自動(dòng)創(chuàng)建它,也就是說我們不用再像一樣首先判斷是否存在了,下面是一個(gè)例子當(dāng)然,也可以用的函數(shù)來實(shí)現(xiàn)同樣的效果,但看起來會(huì)比較丑陋討論根據(jù)官方文檔對(duì)的介紹可 問題 怎樣實(shí)現(xiàn)一個(gè)鍵對(duì)應(yīng)多個(gè)值的字典(也叫 multidict)? 例如: d = { a : [1, 2, 3], b : [4...

    i_garfileo 評(píng)論0 收藏0
  • Python3基礎(chǔ)數(shù)據(jù)類型

    摘要:列表列表是中使用最頻繁的數(shù)據(jù)類型。列表可以完成大多數(shù)集合類的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。注意構(gòu)造包含或個(gè)元素的元組的特殊語法規(guī)則?;竟δ苁沁M(jìn)行成員關(guān)系測(cè)試和刪除重復(fù)元素。以下幾個(gè)內(nèi)置的函數(shù)可以執(zhí)行數(shù)據(jù)類型之間的轉(zhuǎn)換。 一、說明 Python 中的變量不需要聲明。每個(gè)變量在使用前都必須賦值,變量賦值以后該變量才會(huì)被創(chuàng)建。在 Python 中,變量就是變量,它沒有類型,我們所說的類型是變量所指的內(nèi)存中...

    Rindia 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<