国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python通過序列生成字典

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

掃碼添加小助手

加入工程師交流群

通過序列生成字典

我們將下面的序列轉換為dict類型。

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

普通的寫法

fork,vinlst:
dic[k]=v

pythonic的寫法

利用字典推導式快速生成字典。

{k:vfork,vinlst}

key的默認值

當指定key不存在時,將value設置為 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()}

序列修改和初始化

示例數據

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

如果我們需要根據lst來更新dic中的數據,當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]設為 [] 并返回。

key,items的集合運算

如果我們現在需要獲取兩個字典的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()進行集合運算,items()同樣可以進行集合運算。

如果現在我們要獲取兩個字典中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() 集合運算的特性,可以快速提取我們想要的內容。

按key或value對字典排序

使用sorted()函數快速實現對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}

多個字典排序

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

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'}]

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

fromoperatorimportitemgetter

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4417

    瀏覽量

    67516
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    JSON:簡潔代碼高效搞定序列化與反序列

    面對頻繁的數據交互需求,用最簡方式實現JSON序列化與反序列化已成為開發者必備技能,借助主流庫,輕松實現零負擔數據轉換。JSON(JavaScriptObjectNotation)是一種輕量級
    的頭像 發表于 02-25 19:04 ?95次閱讀
    JSON:簡潔代碼高效搞定<b class='flag-5'>序列</b>化與反<b class='flag-5'>序列</b>化

    極簡代碼,搞定JSON序列化與反序列

    快速實現JSON數據的生成序列化)與解析(反序列化)。 目前json庫已全面支持LuatOS開發系列產品,開發者可根據項目實際需求,靈活選用并進行快速集成與開發。 一、 JSON基礎要點 在
    的頭像 發表于 02-23 21:46 ?332次閱讀
    極簡代碼,搞定JSON<b class='flag-5'>序列</b>化與反<b class='flag-5'>序列</b>化

    ATA-D60090功率放大器在時間調制序列生成中的應用

    利用計算機生成波束掃描所需的的波束掃描的時間編碼序列。根據時間編碼序列,任意信號發生器產生的方波信號通過功率放大器產生控制電壓信號。
    的頭像 發表于 11-30 14:27 ?430次閱讀
    ATA-D60090功率放大器在時間調制<b class='flag-5'>序列</b><b class='flag-5'>生成</b>中的應用

    探索無限可能:生成式推薦的演進、前沿與挑戰

    TL;DR 過去一年間,生成式推薦取得了長足的實質性進展,特別是在憑借大型語言模型強大的序列建模與推理能力提升整體推薦性能方面。基于LLM(Large Language Models, LLMs
    的頭像 發表于 10-20 16:42 ?6373次閱讀
    探索無限可能:<b class='flag-5'>生成</b>式推薦的演進、前沿與挑戰

    思必馳一鳴智能客服大模型通過生成式人工智能服務備案

    近日,江蘇網信發布新一批生成式人工智能服務備案信息,其中,由思必馳控股子公司馳必準自主研發的一鳴智能客服大模型通過生成式人工智能服務管理暫行辦法》備案。
    的頭像 發表于 09-16 18:08 ?1206次閱讀

    中車斫輪大模型通過國家生成式人工智能服務備案

    9月14日,國家互聯網信息辦公室發布最新公告,“中車斫輪”大模型通過生成式人工智能服務”備案,標志著其在數據安全治理、模型機制透明度、內容生成合規性等核心維度已全面對標國家監管要求,正式具備向行業
    的頭像 發表于 09-16 09:16 ?795次閱讀

    canopen如何通過對象字典控制外設?

    各位大佬好,我在移植canopen的時候碰到一個疑問。比如我修改對象字典2000,子索引為0這個目錄下的值,如何這個對象映射的是某個led燈的亮滅,輸入1為亮,0為滅。 問題就是我發送報文之后會進入
    發表于 09-11 06:04

    小紅書:通過商品標簽API自動生成內容標簽,優化社區推薦算法

    推薦系統的準確性和用戶體驗。整個過程結構清晰,分為三個步驟:API集成、標簽自動生成和算法優化。 第一步:商品標簽API的集成與數據獲取 小紅書通過開放API接口,實時獲取商品的結構化標簽數據。這些標簽包括品類(如“美妝”或“服飾”
    的頭像 發表于 09-10 16:46 ?978次閱讀
    小紅書:<b class='flag-5'>通過</b>商品標簽API自動<b class='flag-5'>生成</b>內容標簽,優化社區推薦算法

    termux調試python猜數字游戲

    實現(Python版) ```python import random def guess_number(): # 生成隨機數字(1-100) secret_number
    發表于 08-29 17:15

    termux如何搭建python游戲

    模擬器,支持通過APT包管理器安裝軟件。搭建Python游戲開發環境前需完成以下基礎配置: 1. 更換國內源 為提升下載速度,需替換Termux默認源為清華源,執行以下命令: ```bash
    發表于 08-29 07:06

    NVIDIA recsys-examples在生成式推薦系統中的高效實踐

    生成式 AI 浪潮的推動下,推薦系統領域正經歷深刻變革。傳統的深度學習推薦模型 (DLRMs) 雖已展現出一定效果,但在捕捉用戶興趣偏好和動態行為序列變化時,常面臨可擴展性挑戰。生成式推薦系統 (Generative Reco
    的頭像 發表于 07-04 14:43 ?1135次閱讀
    NVIDIA recsys-examples在<b class='flag-5'>生成</b>式推薦系統中的高效實踐

    基礎篇3:掌握Python中的條件語句與循環

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

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

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

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

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

    ?Diffusion生成式動作引擎技術解析

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