99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python通過序列生成字典

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-29 17:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

通過序列生成字典

我們將下面的序列轉(zhuǎn)換為dict類型。

lst=[('a',1),('b',2),('c',3)]

普通的寫法

fork,vinlst:
dic[k]=v

pythonic的寫法

利用字典推導(dǎo)式快速生成字典。

{k:vfork,vinlst}

key的默認(rèn)值

當(dāng)指定key不存在時,將value設(shè)置為 0。

普通的寫法

ifkeynotindct:
dct[key]=0

pythonic的寫法

dct[key]=dct.get(key,0)

交換key與value

普通的寫法

dic={'Python':1,'Java':2}
new_dic={}
fork,vindic.items():
new_dic[v]=k

pythonic的寫法

dic={'Python':1,'Java':2}
new_dic={v:kfork,vindic.items()}

序列修改和初始化

示例數(shù)據(jù)

lst=[('a',1),('b',2),('c',3)]
dic={'a':[0]}

如果我們需要根據(jù)lst來更新dic中的數(shù)據(jù),當(dāng)key存在,則將value添加到原序列末尾,否則初始化value并用序列保存。

普通的寫法

forkey,valueinlst:
ifkeyindic:
dic[key].append(value)
else:
dic[key]=[value]

pythonic的寫法

for(key,value)inlst:
group=dic.setdefault(key,[])
group.append(value)
# dic:{'a':[0, 1], 'b':[2], 'c':[3]}

setdefault(key, default)會先判斷key是否存在,存在則返回dct[key], 不存在則把dct[key]設(shè)為 [] 并返回。

key,items的集合運算

如果我們現(xiàn)在需要獲取兩個字典的key相交的部分的映射信息。

普通的寫法

dic1={'Python':1,'Java':2,'C':3}
dic2={'Python':3,'Java':2,'C++':1}

new_dic={}
fork,vindic1.items():
ifkindic2.keys():
new_dic[k]=v
print(new_dic)

#{'Python':1,'Java':2}

pythonic的寫法

dic1={'Python':1,'Java':2,'C':3}
dic2={'Python':3,'Java':2,'C++':1}

print({k:dic1[k]forkindic1.keys()&dic2.keys()})

#{'Python':1,'Java':2}

這里的dic1.keys() & dic2.keys()用到的就是keys()進(jìn)行集合運算,items()同樣可以進(jìn)行集合運算。

如果現(xiàn)在我們要獲取兩個字典中key,value完全相同的部分。

dic1={'Python':1,'Java':2,'C':3}
dic2={'Python':3,'Java':2,'C++':1}

print(dic1.items()&dic2.items())

#{('Java',2)}

靈活運用 keys,items() 集合運算的特性,可以快速提取我們想要的內(nèi)容。

按key或value對字典排序

使用sorted()函數(shù)快速實現(xiàn)對keyvalue的排序。

dic={'a':2,'b':1,'c':3,'d':0}
lst1=sorted(dic.items(),key=lambdax:x[0],reverse=False)
#[('a',2),('b',1),('c',3),('d',0)]
lst2=sorted(dic.items(),key=lambdax:x[1],reverse=False)
#[('d',0),('b',1),('a',2),('c',3)]
print('按照鍵降序:',{key:valueforkey,valueinlst1})
print('按照值降序:',{key:valueforkey,valueinlst2})

#按照鍵降序:{'a': 2, 'b': 1, 'c': 3, 'd':0}
#按照值降序:{'d':0, 'b': 1, 'a': 2, 'c': 3}

多個字典排序

如果一個序列中包含多個字典,現(xiàn)在要根據(jù)條件對這些字典繼續(xù)排序。同樣可以使用sorted()函數(shù)來實現(xiàn)。

dict_list=[
{'letter':'B','number':'2'},
{'letter':'A','number':'3'},
{'letter':'B','number':'1'}
]

#按letter排序
print(sorted(dict_list,
key=lambdadic:dic['letter']))
#按letter,number排序
print(sorted(dict_list,
key=lambdadic:(dic['letter'],dic['number'])))

#[{'letter':'A','number':'3'},{'letter':'B','number':'2'},{'letter':'B','number':'1'}]
#[{'letter':'A','number':'3'},{'letter':'B','number':'1'},{'letter':'B','number':'2'}]

當(dāng)然,如果你知道itemgetter()的話,上面的代碼就可以改變一下,執(zhí)行速度會更快。

fromoperatorimportitemgetter

print(sorted(dict_list,
key=itemgetter('letter')))
print(sorted(dict_list,
key=itemgetter('letter','number')))

itemgetter()獲取的不是值,而是定義了一個函數(shù),通過該函數(shù)作用到目標(biāo)對象上。
審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64940
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86822
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基礎(chǔ)篇3:掌握Python中的條件語句與循環(huán)

    : print(\"你還很小。\") 循環(huán) 循環(huán)允許程序重復(fù)執(zhí)行一段代碼,直到滿足某個條件為止。Python中有幾種不同的循環(huán)結(jié)構(gòu)。 for循環(huán) for循環(huán)通常用于遍歷序列(如列表、元組
    發(fā)表于 07-03 16:13

    python入門圣經(jīng)-高清電子書(建議下載)

    和Pygal 等強(qiáng)大的Python 庫和工具介紹,以及列表、字典、if 語句、類、文件與異常、代碼測試等內(nèi)容; 第二部分將理論付諸實踐,講解如何開發(fā)三個項目,包括簡單的Python 2D 游戲開發(fā)如何利用數(shù)據(jù)
    發(fā)表于 04-10 16:53

    聲智APP通過北京市生成式人工智能服務(wù)登記

    近日,聲智APP已正式通過北京市第二批生成式人工智能服務(wù)登記,成為《生成式人工智能服務(wù)管理暫行辦法》(以下簡稱《辦法》)實施以來,北京市累計已完成46款生成式人工智能服務(wù)登記中的重要一
    的頭像 發(fā)表于 03-19 16:33 ?555次閱讀

    ?Diffusion生成式動作引擎技術(shù)解析

    Diffusion生成式動作引擎 Diffusion生成式動作引擎是一種基于擴(kuò)散模型(Diffusion Models)的生成式人工智能技術(shù),專注于生成連續(xù)、逼真的人類動作或動畫
    的頭像 發(fā)表于 03-17 15:14 ?1849次閱讀

    Python中的迭代器與生成

    Python迭代器與生成器 列表生成式 列表生成式也叫做列表推導(dǎo)式,它本身還是列表,只不過它是根據(jù)我們定義的規(guī)則來生成一個真實的列表。 ?
    的頭像 發(fā)表于 02-20 10:43 ?396次閱讀

    開源隨機(jī)數(shù)生成器庫OpenRNG助力實現(xiàn)移植到Arm平臺時的最佳性能

    OpenRNG 實現(xiàn)了多種生成器和分布方式。生成器算法可生成“看似隨機(jī)”并具有某些統(tǒng)計特性的序列,我們將在下文進(jìn)行討論。分布方式會將序列映射
    的頭像 發(fā)表于 02-08 09:24 ?1312次閱讀
    開源隨機(jī)數(shù)<b class='flag-5'>生成</b>器庫OpenRNG助力實現(xiàn)移植到Arm平臺時的最佳性能

    使用Python實現(xiàn)xgboost教程

    使用Python實現(xiàn)XGBoost模型通常涉及以下幾個步驟:數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練、模型評估和模型預(yù)測。以下是一個詳細(xì)的教程,指導(dǎo)你如何在Python中使用XGBoost。 1. 安裝XGBoost
    的頭像 發(fā)表于 01-19 11:21 ?1387次閱讀

    Python中dict支持多個key的方法

    ? 在Python中,字典(dict)是一種非常強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),它允許我們通過鍵(key)來存儲和檢索值(value)。有時候,我們可能想要根據(jù)多個鍵來檢索或操作字典中的數(shù)據(jù)。雖然
    的頭像 發(fā)表于 11-29 15:59 ?540次閱讀

    RNN在圖片描述生成中的應(yīng)用

    輸入圖像的內(nèi)容。 RNN的基本原理 RNN是一種用于處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò),它通過循環(huán)結(jié)構(gòu)來處理序列中的每個元素,并保持前一個元素的信息。RNN的主要特點是它能夠處理任意長度的序列,并
    的頭像 發(fā)表于 11-15 09:58 ?962次閱讀

    如何使用RNN進(jìn)行時間序列預(yù)測

    一種強(qiáng)大的替代方案,能夠?qū)W習(xí)數(shù)據(jù)中的復(fù)雜模式,并進(jìn)行準(zhǔn)確的預(yù)測。 RNN的基本原理 RNN是一種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù)。在RNN中,每個輸入序列的元素都會通過一個或多個循環(huán)層,這些循環(huán)層可以捕獲時間
    的頭像 發(fā)表于 11-15 09:45 ?923次閱讀

    如何使用Python構(gòu)建LSTM神經(jīng)網(wǎng)絡(luò)模型

    numpy tensorflow 2. 準(zhǔn)備數(shù)據(jù) LSTM模型通常用于序列數(shù)據(jù),比如時間序列預(yù)測或文本生成。這里我們以一個簡單的時間序列預(yù)測為例。假
    的頭像 發(fā)表于 11-13 10:10 ?1590次閱讀

    如何利用python和API查詢IP地址?

    Python中,直接查詢IP地址的地理位置或詳細(xì)信息(如所屬國家、城市等)通常需要依賴外部API服務(wù),因為Python標(biāo)準(zhǔn)庫本身不提供直接查詢IP地址地理位置的功能。以下是一個使用requests
    發(fā)表于 08-28 11:55

    【「時間序列與機(jī)器學(xué)習(xí)」閱讀體驗】時間序列的信息提取

    模型效果與性能的過程。 時間序列的缺失值填充方法有:插值法;回歸填充;均值/中位數(shù)/眾數(shù)填充;可以借助 Python 的 Pandas庫,通過前向填充、后向填充、線性插值、均值/中位數(shù)/眾數(shù)填充等
    發(fā)表于 08-17 21:12

    【《時間序列與機(jī)器學(xué)習(xí)》閱讀體驗】+ 時間序列的信息提取

    之前對《時間序列與機(jī)器學(xué)習(xí)》一書進(jìn)行了整體瀏覽,并且非常輕松愉快的完成了第一章的學(xué)習(xí),今天開始學(xué)習(xí)第二章“時間序列的信息提取”。 先粗略的翻閱第二章,內(nèi)容復(fù)雜,充斥了大量的定義、推導(dǎo)計算、代碼,好在
    發(fā)表于 08-14 18:00

    【「時間序列與機(jī)器學(xué)習(xí)」閱讀體驗】全書概覽與時間序列概述

    他領(lǐng)域(如自然語言處理、計算機(jī)視覺等)的關(guān)聯(lián)。 ●第2章“時間序列的信息提取”:介紹特征工程的核心概念及其在時間序列分析中的廣用,比如對原始數(shù)據(jù)進(jìn)行歸一化、缺失值填充等轉(zhuǎn)換;以及如何通過特征工程從時間
    發(fā)表于 08-07 23:03