哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

python實現(xiàn)合并字典的方法

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-04-08 15:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、最簡單的原地更新

字典對象內(nèi)置了一個 update 方法,用于把另一個字典更新到自己身上。

>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>> profile.update(ext_info)
>>> print(profile)
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}

如果想使用 update 這種最簡單、最地道原生的方法,但又不想更新到自己身上,而是生成一個新的對象,那請使用深拷貝。

>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>> from copy import deepcopy
>>>
>>> full_profile = deepcopy(profile)
>>> full_profile.update(ext_info)
>>>
>>> print(full_profile)
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}
>>> print(profile)
{"name": "xiaoming", "age": 27}

2、先解包再合并字典

使用 ** 可以解包字典,解包完后再使用 dict 或者 {} 就可以合并。

>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>> full_profile01 = {**profile, **ext_info}
>>> print(full_profile01)
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}
>>>
>>> full_profile02 = dict(**profile, **ext_info)
>>> print(full_profile02)
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}

若你不知道 dict(**profile, **ext_info) 做了啥,你可以將它等價于

>>> dict((("name", "xiaoming"), ("age", 27), ("gender", "male")))
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}

3、借助 itertools

Python 里有一個非常強大的內(nèi)置模塊,它專門用于操作可迭代對象。

正好我們字典也是可迭代對象,自然就可以想到,可以使用 itertools.chain() 函數(shù)先將多個字典(可迭代對象)串聯(lián)起來,組成一個更大的可迭代對象,然后再使用 dict 轉(zhuǎn)成字典。

>>> import itertools
>>>
>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>>
>>> dict(itertools.chain(profile.items(), ext_info.items()))
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}

4、借助 ChainMap

如果可以引入一個輔助包,那我就再提一個, ChainMap 也可以達到和 itertools 同樣的效果。

>>> from collections import ChainMap
>>>
>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>> dict(ChainMap(profile, ext_info))
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}

使用 ChainMap 有一點需要注意,當(dāng)字典間有重復(fù)的鍵時,只會取第一個值,排在后面的鍵值并不會更新掉前面的(使用 itertools 就不會有這個問題)。

>>> from collections import ChainMap
>>>
>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info={"age": 30}
>>> dict(ChainMap(profile, ext_info))
{'name': 'xiaoming', 'age': 27}

5、使用dict.items() 合并

在 Python 3.9 之前,其實就已經(jīng)有 | 操作符了,只不過它通常用于對集合(set)取并集。

利用這一點,也可以將它用于字典的合并,只不過得繞個彎子,有點不好理解。

你得先利用 items 方法將 dict 轉(zhuǎn)成 dict_items,再對這兩個 dict_items 取并集,最后利用 dict 函數(shù),轉(zhuǎn)成字典。

>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>> full_profile = dict(profile.items() | ext_info.items())
>>> full_profile
{'gender': 'male', 'age': 27, 'name': 'xiaoming'}

當(dāng)然了,你如果嫌這樣太麻煩,也可以簡單點,直接使用 list 函數(shù)再合并(示例為 Python 3.x )

>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>> dict(list(profile.items()) + list(ext_info.items()))
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}

若你在 Python 2.x 下,可以直接省去 list 函數(shù)。

>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>> dict(profile.items() + ext_info.items())
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}

6、最酷炫的字典解析式

Python 里對于生成列表、集合、字典,有一套非常 Pythonnic 的寫法。

那就是列表解析式,集合解析式和字典解析式,通常是 Python 發(fā)燒友的最愛,那么今天的主題:字典合并,字典解析式還能否勝任呢?

當(dāng)然可以,具體示例代碼如下:

>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>> {k:v for d in [profile, ext_info] for k,v in d.items()}
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}

7、Python 3.9 新特性

在 2 月份發(fā)布的 Python 3.9.04a 版本中,新增了一個抓眼球的新操作符: |, PEP584 將它稱之為合并操作符(Union Operator),用它可以很直觀地合并多個字典。

>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>> profile | ext_info
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}
>>>
>>> ext_info | profile
{'gender': 'male', 'name': 'xiaoming', 'age': 27}
>>>

除了 | 操作符之外,還有另外一個操作符 |=,類似于原地更新。

>>> ext_info |= profile
>>> ext_info
{'gender': 'male', 'name': 'xiaoming', 'age': 27}
>>> profile |= ext_info
>>> profile
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}

本篇文章的主旨,并不在于讓你全部掌握這 7 種合并字典的方法,實際在工作中,你只要選用一種最順手的方式即可,但是在協(xié)同工作中,或者在閱讀他人代碼時,你不可避免地會碰到各式各樣的寫法,這時候你能下意識地知道這是在做合并字典的操作,那這篇文章就是有意義的。
審核編輯:湯梓紅

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

    關(guān)注

    0

    文章

    13

    瀏覽量

    7888
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4882

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    使用Python/MyHDL創(chuàng)建自定義FPGA IP

    使用 Python/MyHDL 創(chuàng)建自定義 FPGA IP,與 Vivado 集成,并通過 PYNQ 進行控制——實現(xiàn)軟件上的簡單硬件設(shè)計。
    的頭像 發(fā)表于 04-09 09:53 ?153次閱讀
    使用<b class='flag-5'>Python</b>/MyHDL創(chuàng)建自定義FPGA IP

    使用PYTHON進行的跨平臺仿真

    快速物理光學(xué)軟件VirtualLab Fusion以其“連接場求解器”方法而自豪,該方法將應(yīng)用于不同組件上的專用電磁場求解器結(jié)合在一起,以實現(xiàn)整個系統(tǒng)的物理光學(xué)模擬。這種方法的邏輯擴展
    發(fā)表于 04-02 08:21

    [VirtualLab] 使用Python運行VirtualLab Fusion光學(xué)仿真

    Fusion的簡單方法。在本示例中,我們將演示如何使用Python腳本運行光學(xué)仿真,以向用戶簡要概述這種跨平臺的仿真能力。 用例概覽 文件路徑 用戶可以在樣本文件的文件夾中找到所有文件。包含這些文件
    發(fā)表于 03-31 09:39

    [CANopen] 使用 CANopenEditor 工具編輯 CANopen 對象字典

    /前言CANopen是一種基于CAN總線的高層通信協(xié)議,其核心對象字典(ObjectDictionary)定義了設(shè)備的全部參數(shù)與功能。為滿足不同廠商設(shè)備在特定場景
    的頭像 發(fā)表于 03-20 08:33 ?885次閱讀
    [CANopen] 使用 CANopenEditor 工具編輯 CANopen 對象<b class='flag-5'>字典</b>

    Python運行本地Web服務(wù)并實現(xiàn)遠程訪問

    本文介紹使用Python搭建本地Web服務(wù)并結(jié)合 ZeroNews 實現(xiàn)公網(wǎng)訪問。
    的頭像 發(fā)表于 02-06 11:39 ?292次閱讀
    <b class='flag-5'>Python</b>運行本地Web服務(wù)并<b class='flag-5'>實現(xiàn)</b>遠程訪問

    SAP 拆分合并實施商選型指南:方法論 + 工具 + 案例核心參考

    針對SAP系統(tǒng)拆分與合并這類高復(fù)雜度項目,選擇實施商需重點考察其方法論成熟度(如SNP的“拆分工廠”模式)、專業(yè)工具(如CrystalBridge平臺)及行業(yè)案例經(jīng)驗。德勤等大型服務(wù)商擅長大規(guī)模整合,區(qū)域型伙伴則精于本地化合規(guī),三者組合可形成完整解決方案閉環(huán)。
    的頭像 發(fā)表于 01-05 17:21 ?636次閱讀

    沒有專利的opencv-python 版本

    所有 官方發(fā)布的 opencv-python 核心版本(無 contrib 擴展)都無專利風(fēng)險——專利問題僅存在于 opencv-contrib-python 擴展模塊中的少數(shù)算法(如早期 SIFT
    發(fā)表于 12-13 12:37

    Python調(diào)用API教程

    兩個不同系統(tǒng)之間的信息交互。在這篇文章中,我們將詳細介紹Python調(diào)用API的方法和技巧。 一、用Requests庫發(fā)送HTTP請求 使用Python調(diào)用API的第一步是發(fā)送HTTP請求,通常
    的頭像 發(fā)表于 11-03 09:15 ?1140次閱讀

    重磅!Skyworks與Qorvo官宣合并

    電子發(fā)燒友網(wǎng)綜合報道 全球領(lǐng)先的高性能模擬及混合信號半導(dǎo)體企業(yè)Skyworks與全球領(lǐng)先的連接及電源解決方案提供商Qorvo宣布,雙方已達成最終合并協(xié)議,將通過現(xiàn)金加股票的交易方式完成合并
    的頭像 發(fā)表于 10-29 09:16 ?2800次閱讀

    訂單拆單合并處理接口設(shè)計與實現(xiàn)

    處理接口能顯著提升系統(tǒng)性能,降低運營開銷。本文將逐步介紹該接口的核心設(shè)計、實現(xiàn)細節(jié)和使用場景,幫助開發(fā)者快速上手。 1. 接口核心功能 該接口的主要功能是動態(tài)處理訂單的拆分和合并操作。輸入包括訂單數(shù)據(jù)和規(guī)則參數(shù),
    的頭像 發(fā)表于 10-16 14:47 ?809次閱讀
    訂單拆單<b class='flag-5'>合并</b>處理接口設(shè)計與<b class='flag-5'>實現(xiàn)</b>

    canopen如何通過對象字典控制外設(shè)?

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

    termux調(diào)試python猜數(shù)字游戲

    用termux做一個猜數(shù)字游戲 下面是在Termux中創(chuàng)建猜數(shù)字游戲的步驟及完整實現(xiàn)方案,結(jié)合Python實現(xiàn)(最適配Termux環(huán)境): ? 一、環(huán)境準(zhǔn)備(Termux基礎(chǔ)配置) 1.
    發(fā)表于 08-29 17:15

    termux如何搭建python游戲

    termux如何搭建python游戲 Termux搭建Python游戲開發(fā)環(huán)境的完整指南 一、Termux基礎(chǔ)環(huán)境準(zhǔn)備 Termux是一款無需root即可在安卓設(shè)備上運行的Linux終端
    發(fā)表于 08-29 07:06

    python app不能運行怎么解決?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    發(fā)表于 08-06 06:27

    大彩講堂:VisualTFT軟件如何通過FontCreator實現(xiàn)字庫的合并

    VisualTFT軟件通過FontCreator實現(xiàn)字庫的合并
    的頭像 發(fā)表于 06-27 16:59 ?1334次閱讀
    大彩講堂:VisualTFT軟件如何通過FontCreator<b class='flag-5'>實現(xiàn)</b>字庫的<b class='flag-5'>合并</b>
    平定县| 台江县| 察哈| 宜兴市| 宁夏| 永顺县| 茌平县| 肇源县| 永德县| 金山区| 荔波县| 徐水县| 陕西省| 鄂尔多斯市| 瑞安市| 澄迈县| 台南县| 宜昌市| 两当县| 洪洞县| 石渠县| 连山| 桃江县| 兰州市| 九台市| 沂南县| 梁河县| 延边| 新民市| 临澧县| 南部县| 高尔夫| 泽州县| 安新县| 固安县| 保定市| 新干县| 周口市| 贵溪市| 巢湖市| 金湖县|