日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python 炫技操作之合并字典的七種方法

瀏覽:30日期:2022-07-30 14:10:51

Python 語言里有許多(而且是越來越多)的高級特性,是 Python 發(fā)燒友們非常喜歡的。在這些人的眼里,能夠寫出那些一般開發(fā)者看不懂的高級特性,就是高手,就是大神。

但你要知道,在團隊合作里,炫技是大忌。

為什么這么說呢?我說下自己的看法: 越簡潔的代碼,越清晰的邏輯,就越不容易出錯; 在團隊合作中,你的代碼不只有你在維護,降低別人的閱讀/理解代碼邏輯的成本是一個良好的品德

簡單的代碼,只會用到最基本的語法糖,復雜的高級特性,會有更多的依賴(如語言的版本)

該篇是「炫技系列」的第二篇內容,在這個系列里,我將總結盤點一下,我所見過的那些炫技操作。在這里,如果你是 Python 發(fā)燒友,你可以學到一些寫出超酷的代碼書寫技巧。同時,看了這些內容,對你在閱讀別人的代碼時,也許會有些幫助。

1. 最簡單的原地更新

字典對象內置了一個 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 里有一個非常強大的內置模塊,它專門用于操作可迭代對象。

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

>>> 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 有一點需要注意,當字典間有重復的鍵時,只會取第一個值,排在后面的鍵值并不會更新掉前面的(使用 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 之前,其實就已經有 | 操作符了,只不過它通常用于對集合(set)取并集。

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

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

>>> 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’}

當然了,你如果嫌這樣太麻煩,也可以簡單點,直接使用 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ā)燒友的最愛,那么今天的主題:字典合并,字典解析式還能否勝任呢?

當然可以,具體示例代碼如下:

>>> 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’}

看到這里,有沒有漲姿勢了,學了這么久的 Python ,沒想到合并字典還有這么多的方法。本篇文章的主旨,并不在于讓你全部掌握這 7 種合并字典的方法,實際在工作中,你只要選用一種最順手的方式即可,但是在協(xié)同工作中,或者在閱讀他人代碼時,你不可避免地會碰到各式各樣的寫法,這時候你能下意識的知道這是在做合并字典的操作,那這篇文章就是有意義的。

總結

以上就是Python 炫技操作之合并字典的七種方法的詳細內容,更多關于python 合并字典的方法的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩色图| 国产高清亚洲| 久久久天天操| 久久久免费人体| 卡一精品卡二卡三网站乱码| 伊人久久成人| 中文在线不卡| 日本免费新一区视频| 日韩一区网站| 国产欧美一区二区三区精品观看| 亚洲精品裸体| 久久国产乱子精品免费女| 欧美永久精品| 毛片不卡一区二区| 香蕉视频亚洲一级| 尹人成人综合网| 亚洲在线久久| 欧美国产另类| 国产理论在线| 天堂√中文最新版在线| 精品成人免费一区二区在线播放| 鲁大师精品99久久久| 麻豆成人av在线| 久久蜜桃精品| 免费日本视频一区| 国产麻豆一区| 久久久久免费av| 日本亚洲不卡| av资源中文在线天堂| 久久天堂av| 亚洲色图国产| 狠狠久久伊人中文字幕| se01亚洲视频| 不卡视频在线| 69堂精品视频在线播放| 国产伊人久久| 免费精品国产| 国产乱码精品一区二区三区四区 | yellow在线观看网址| 成人片免费看| 黄色欧美日韩| 国产精品va| 五月天久久久| 国产精品亚洲四区在线观看| 国产精品成人国产| 欧美亚洲国产一区| 国产一卡不卡| 欧美亚洲在线日韩| 国产欧美日韩综合一区在线播放| 成人午夜亚洲| 久久亚洲不卡| 色偷偷色偷偷色偷偷在线视频| 日韩视频在线一区二区三区 | 日韩一区电影| 综合激情网站| 欧美亚洲日本精品| 日韩不卡一二三区| 不卡视频在线| 精品一区二区三区免费看| 激情六月综合| 欧美国产日本| 亚洲精品美女91| 99久久精品费精品国产| 欧美日韩一区二区三区在线电影| 日韩成人免费| 亚洲乱亚洲高清| 99精品在线观看| 你懂的国产精品永久在线| 午夜精品亚洲| 国产不卡一区| 国产女人18毛片水真多18精品| 四虎4545www国产精品| 日本免费在线视频不卡一不卡二| 日韩国产欧美一区二区| 日韩1区2区3区| 欧美福利在线| 日韩av自拍| 国产欧美一区| 蜜桃av一区二区三区电影| 97国产成人高清在线观看| 免费在线观看日韩欧美| yellow在线观看网址| 日韩av中文在线观看| 欧美1区免费| av综合电影网站| 欧美成人aaa| 18国产精品| 亚洲一级大片| 国产一区导航| 波多野结衣一区| 日韩欧美精品一区| 精品久久一区| 国产精品久久亚洲不卡| 视频一区二区欧美| 免费欧美一区| 日韩国产专区| 久久精品欧洲| 国产精品亚洲一区二区在线观看| 欧美综合国产| 成人av二区| 欧美日韩国产免费观看视频| 国产精品成人一区二区网站软件| 免费中文字幕日韩欧美| 日韩精品午夜| 日韩精品欧美| 91精品啪在线观看国产18| 久久精品国产亚洲aⅴ| 日韩福利视频网| 日韩欧美美女在线观看| 亚洲丝袜啪啪| 欧美专区在线| 久久亚洲色图| 蜜桃一区二区三区在线观看| 国产中文在线播放| 福利在线免费视频| sm久久捆绑调教精品一区| 久久a爱视频| 国产极品一区| 欧美激情aⅴ一区二区三区 | 日韩美女精品| 日本vs亚洲vs韩国一区三区二区| 久久夜色精品| 91精品高清| 亚洲欧美日韩国产一区二区| 91精品精品| 日韩视频在线一区二区三区 | 在线一区二区三区视频| 欧美日韩国产传媒| 欧美va天堂在线| 99在线|亚洲一区二区| 亚洲高清av| 亚洲欧洲日本mm| 日韩视频在线一区二区三区| 日韩免费在线| 999国产精品| 亚洲作爱视频| 午夜亚洲福利| 欧美国产亚洲精品| 欧美男人天堂| 亚洲激精日韩激精欧美精品| 999久久久亚洲| 亚洲欧美日韩在线观看a三区| 视频一区二区三区入口| 免费人成黄页网站在线一区二区| 男人的天堂久久精品| 人人爽香蕉精品| 欧美视频二区| 国产不卡av一区二区| 国产欧美一区二区三区精品酒店| 在线看片福利| 五月天综合网站| 亚洲精品综合| 国产精品网在线观看| 久久久久黄色| 亚洲深夜视频| 免费日韩一区二区| 国产伦一区二区三区| 精品久久精品| av亚洲免费| 国产人成精品一区二区三| 国产一区二区三区精品在线观看| 91看片一区| 久久国产精品久久久久久电车 | 久久天堂成人| 蜜桃视频在线观看一区| 91精品美女| 日韩一区欧美| 婷婷视频一区二区三区| 久久中文欧美| 午夜久久99| 国产精品亚洲综合色区韩国 | 日韩理论视频| 老牛影视一区二区三区| 国产乱码精品一区二区三区四区| 97精品在线| 久久国产99| 久草精品视频| 国产亚洲毛片| 精品视频网站| 视频精品一区二区| 成人在线超碰| 亚洲人亚洲人色久| 亚洲天堂av影院| 日本欧美在线| 免费久久精品| 捆绑调教美女网站视频一区| 国产极品嫩模在线观看91精品| 欧洲一区二区三区精品| 91精品观看| 欧美精品1区| 91久久国产| 国产精品1luya在线播放| 亚洲一级特黄| 日韩欧美另类中文字幕| 色一区二区三区| 亚洲欧洲美洲国产香蕉| 捆绑调教日本一区二区三区| 亚洲开心激情| 91精品一区二区三区综合在线爱| 欧美精品中文|