精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python 炫技操作(02):合并字典的七種方法

開發 后端
在這里,如果你是 Python 發燒友,你可以學到一些寫出超酷的代碼書寫技巧。同時,看了這些內容,對你在閱讀別人的代碼時,也許會有些幫助。

系列導讀:Python 炫技操作(01):條件語句的七種寫法

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

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

為什么這么說呢?我說下自己的看法:

  • 越簡潔的代碼,越清晰的邏輯,就越不容易出錯;
  • 在團隊合作中,你的代碼不只有你在維護,降低別人的閱讀/理解代碼邏輯的成本是一個良好的品德
  • 簡單的代碼,只會用到最基本的語法糖,復雜的高級特性,會有更多的依賴(如語言的版本)

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

1. 最簡單的原地更新

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

  1. >>> profile = {"name": "xiaoming", "age": 27} 
  2. >>> ext_info = {"gender": "male"} 
  3. >>> 
  4. >>> profile.update(ext_info) 
  5. >>> print(profile) 
  6. {'name': 'xiaoming', 'age': 27, 'gender': 'male'} 

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

  1. >>> profile = {"name": "xiaoming", "age": 27} 
  2. >>> ext_info = {"gender": "male"} 
  3. >>> 
  4. >>> from copy import deepcopy 
  5. >>> 
  6. >>> full_profile = deepcopy(profile) 
  7. >>> full_profile.update(ext_info) 
  8. >>> 
  9. >>> print(full_profile) 
  10. {'name': 'xiaoming', 'age': 27, 'gender': 'male'} 
  11. >>> print(profile) 
  12. {"name": "xiaoming", "age": 27} 

2. 先解包再合并字典

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

  1. >>> profile = {"name": "xiaoming", "age": 27} 
  2. >>> ext_info = {"gender": "male"} 
  3. >>> 
  4. >>> full_profile01 = {**profile, **ext_info} 
  5. >>> print(full_profile01) 
  6. {'name': 'xiaoming', 'age': 27, 'gender': 'male'} 
  7. >>> 
  8. >>> full_profile02 = dict(**profile, **ext_info) 
  9. >>> print(full_profile02) 
  10. {'name': 'xiaoming', 'age': 27, 'gender': 'male'} 

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

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

3. 借助 itertools

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

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

  1. >>> import itertools 
  2. >>> 
  3. >>> profile = {"name": "xiaoming", "age": 27} 
  4. >>> ext_info = {"gender": "male"} 
  5. >>> 
  6. >>> 
  7. >>> dict(itertools.chain(profile.items(), ext_info.items())) 
  8. {'name': 'xiaoming', 'age': 27, 'gender': 'male'} 

4. 借助 ChainMap

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

  1. >>> from collections import ChainMap 
  2. >>> 
  3. >>> profile = {"name": "xiaoming", "age": 27} 
  4. >>> ext_info = {"gender": "male"} 
  5. >>> 
  6. >>> dict(ChainMap(profile, ext_info)) 
  7. {'name': 'xiaoming', 'age': 27, 'gender': 'male'} 

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

  1. >>> from collections import ChainMap 
  2. >>> 
  3. >>> profile = {"name": "xiaoming", "age": 27} 
  4. >>> ext_info={"age": 30} 
  5. >>> dict(ChainMap(profile, ext_info)) 
  6. {'name': 'xiaoming', 'age': 27} 

5. 使用dict.items() 合并

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

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

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

  1. >>> profile = {"name": "xiaoming", "age": 27} 
  2. >>> ext_info = {"gender": "male"} 
  3. >>> 
  4. >>> full_profile = dict(profile.items() | ext_info.items()) 
  5. >>> full_profile 
  6. {'gender': 'male', 'age': 27, 'name': 'xiaoming'} 

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

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

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

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

6. 最酷炫的字典解析式

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

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

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

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

7. Python 3.9 新特性

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

  1. >>> profile = {"name": "xiaoming", "age": 27} 
  2. >>> ext_info = {"gender": "male"} 
  3. >>> 
  4. >>> profile | ext_info 
  5. {'name': 'xiaoming', 'age': 27, 'gender': 'male'} 
  6. >>> 
  7. >>> ext_info | profile 
  8. {'gender': 'male', 'name': 'xiaoming', 'age': 27} 
  9. >>> 
  10. >>> 

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

  1. >>> ext_info |= profile 
  2. >>> ext_info 
  3. {'gender': 'male', 'name': 'xiaoming', 'age': 27} 
  4. >>> 
  5. >>> 
  6. >>> profile |= ext_info 
  7. >>> profile 
  8. {'name': 'xiaoming', 'age': 27, 'gender': 'male'} 

看到這里,有沒有漲姿勢了,學了這么久的 Python ,沒想到合并字典還有這么多的方法。本篇文章的主旨,并不在于讓你全部掌握這 7 種合并字典的方法,實際上,你只要選用一種最順手的方式即可。

但是在協同工作中,或者在閱讀他人代碼時,你不可避免地會碰到各式各樣的寫法,這時候你能下意識的知道這是在做合并字典的操作,那這篇文章就是有意義的。

責任編輯:趙寧寧 來源: Python編程時光
相關推薦

2020-10-09 09:07:21

Python模塊重載開發

2021-08-18 11:55:25

Python函數代碼

2020-05-14 10:36:34

Python數據開發

2020-12-21 11:07:58

Python開發安裝

2020-03-30 09:51:37

Python數據語言

2016-09-28 20:05:22

2011-12-16 14:45:36

JavaJSP

2011-05-30 13:37:46

JSP

2022-10-27 08:09:33

2023-04-18 15:57:30

2024-07-29 08:00:00

2022-09-30 10:48:12

AR制造業

2021-07-02 10:43:52

IT人才首席信息官人才招聘

2009-10-29 16:32:24

查看Oracle用戶的

2024-11-21 16:30:21

2022-05-09 13:35:56

云配置云安全黑客

2021-11-19 10:10:14

手機移動設備網絡攻擊

2022-04-18 10:09:52

首席信息官CIO

2022-05-24 14:37:49

React條件渲染

2023-06-08 09:00:00

點贊
收藏

51CTO技術棧公眾號

精品一卡二卡三卡| 好吊色欧美一区二区三区| 特黄一区二区三区| 一区二区三区免费在线看| 精品女厕一区二区三区| 台湾成人av| 亚洲高清精品视频| 久久一本综合频道| 欧美乱大交做爰xxxⅹ性3| 黄色录像a级片| 深夜福利亚洲| 欧美日韩一区二区在线| 中文字幕剧情在线观看一区| 欧美 中文字幕| 麻豆国产精品一区二区三区 | 99中文字幕一区| 国产美女精品人人做人人爽| 欧美亚洲日本黄色| 国产精品久久久久久久精| 亚洲欧美tv| 欧美成人欧美edvon| 久草综合在线观看| 91美女主播在线视频| 成人欧美一区二区三区| 久久资源亚洲| 丰满岳乱妇国产精品一区| 老司机精品视频在线| 欧美亚洲激情视频| 国产亚洲精品女人久久久久久| 精品视频免费在线观看| 亚洲成人久久一区| 69久久精品无码一区二区| 一二区成人影院电影网| 欧美日韩国产丝袜美女| 黄色a级片免费看| 免费高清完整在线观看| 国产午夜亚洲精品午夜鲁丝片| 国产精品麻豆免费版| 97人妻精品一区二区三区软件| 日韩二区三区四区| 欧美在线一级va免费观看| 91精品国产高潮对白| 亚洲九九在线| 日韩中文字幕精品| 香蕉久久久久久久| 成人一二三区| 中文字幕亚洲图片| 亚洲精品国产一区黑色丝袜 | 国内精品在线播放| 国产区精品在线观看| 最近中文字幕在线观看| 日韩精品免费专区| 国产精品久久久久久亚洲影视 | 久久精品国产精品青草| 国产精品入口日韩视频大尺度| 久久精品视频7| 久久一区亚洲| 国产精品国产三级国产aⅴ9色| av图片在线观看| 日韩制服丝袜先锋影音| 日本精品va在线观看| 99热在线观看免费精品| 国产精品一区亚洲| 国产91色在线免费| 欧美性猛交xxxx乱大交hd| 免费人成精品欧美精品| 国产欧美韩国高清| a级片在线免费看| 国产福利一区二区三区在线视频| 51精品国产人成在线观看| 亚洲精品久久久蜜桃动漫 | 天堂va蜜桃一区二区三区漫画版| 国产精品ⅴa在线观看h| 亚洲一区中文字幕在线| 国产一区二区日韩精品| 爱情岛论坛亚洲入口| 天天爽夜夜爽夜夜爽| 久久奇米777| 亚洲一区二区在| 欧美亚洲系列| 欧美视频在线观看 亚洲欧| 欧洲熟妇精品视频| 国产一精品一av一免费爽爽| 欧美r级在线观看| 欧美黑人欧美精品刺激| 久久精品国产99久久| 欧美日本亚洲视频| 特级西西444www大精品视频免费看| 视频在线在亚洲| 成人av番号网| 色呦呦视频在线| 亚洲国产精品av| 真实国产乱子伦对白视频| 亚洲人成午夜免电影费观看| 欧美日韩小视频| 一区二区免费在线观看视频| 精品久久久久久久| 欧美激情一区二区久久久| 中文字幕天堂在线| 国产不卡在线一区| 欧美在线视频二区| 免费网站在线观看人| 欧美综合视频在线观看| 国产一精品一aⅴ一免费| 欧美亚洲精品在线| 久久久女人电视剧免费播放下载| 中文字幕视频免费观看| 成人综合婷婷国产精品久久蜜臀| 色女孩综合网| 僵尸再翻生在线观看免费国语| 欧美亚洲丝袜传媒另类| 天天躁日日躁狠狠躁av麻豆男男| 操欧美老女人| 97av在线播放| 午夜精品无码一区二区三区| 国产女人水真多18毛片18精品视频| 日韩中文字幕在线不卡| 未满十八勿进黄网站一区不卡| 亚洲精品成人av| 欧美精品色哟哟| 蜜桃精品视频在线观看| 精品视频免费观看| 男女在线视频| 欧美肥妇毛茸茸| 亚洲а∨天堂久久精品2021| 激情综合网址| 亚洲综合大片69999| 香蕉视频免费在线播放| 色婷婷av一区二区三区大白胸| 亚洲一二三四五| 在线国产一区| 91亚洲国产成人久久精品网站| 国产综合在线观看| 狠狠躁夜夜躁人人爽天天天天97 | 中文字幕在线看视频国产欧美在线看完整| 国产精品第九页| 国产精品1区二区.| 国产又大又长又粗又黄| 精品123区| 亚洲欧美www| 亚洲欧美在线视频免费| 国产成人自拍在线| 欧美 国产 精品| 伊人久久一区| 久久视频这里只有精品| 中文字幕乱码视频| 国产精品网站一区| 91n.com在线观看| 精品国产91| 日韩免费在线看| 撸视在线观看免费视频| 91久久线看在观草草青青| 亚洲国产欧美视频| 久久久久国产精品午夜一区| 久久伊人一区| 91精品xxx在线观看| 亚洲欧美日韩一区二区在线| 日韩福利片在线观看| 免费成人在线观看视频| 中文字幕日韩精品久久| 99精品视频在线免费播放 | 亚洲av鲁丝一区二区三区| 韩日av一区二区| 亚洲欧洲国产精品久久| 性高爱久久久久久久久| 在线精品播放av| 在线免费看91| 一区二区三区产品免费精品久久75| 日批视频在线看| 一区二区亚洲| 欧美国产二区| 91精品国产经典在线观看| 中日韩美女免费视频网址在线观看| 中文字幕乱码视频| 悠悠色在线精品| 日本japanese极品少妇| 久久中文在线| 一本色道久久综合亚洲二区三区| av一级久久| 欧美丰满少妇xxxxx做受| 日本黄色三级视频| 色婷婷一区二区三区四区| 农村老熟妇乱子伦视频| 国产一区二区在线看| 日本aa在线观看| 在线观看欧美理论a影院| 国产精品露脸自拍| 在线看三级电影| 亚洲免费电影在线观看| 国产日本精品视频| 懂色aⅴ精品一区二区三区蜜月| 永久免费av无码网站性色av| 国产一区二区精品久久91| 男女猛烈激情xx00免费视频| 久久91成人| 亚洲va久久久噜噜噜| 蜜桃麻豆影像在线观看| 久久久www成人免费精品| 隣の若妻さん波多野结衣| 91福利精品视频| 中文字幕av久久爽av| 久久久三级国产网站| 亚洲日本黄色片| 裸体素人女欧美日韩| 欧美另类videosbestsex日本| 亚洲精品国产动漫| 亚洲最大av网站| 日本成人片在线| 欧美激情网友自拍| 888av在线| 日韩精品在线视频| 亚洲h视频在线观看| 在线精品国精品国产尤物884a| 久久机热这里只有精品| 国产欧美一区二区在线观看| 国产大尺度视频| 久久av资源站| www.国产区| 亚洲激情不卡| 神马午夜伦理影院| 欧美日韩在线二区| 国产精品入口免费| 91精品一区| 国产精品电影久久久久电影网| brazzers在线观看| 精品自在线视频| 日本三级在线视频| 国产视频一区在线| 天天操天天干天天操| 这里只有精品视频在线观看| 黄色av网站免费| 色偷偷久久人人79超碰人人澡| 国产主播在线观看| 亚洲激情成人在线| 精品无码一区二区三区蜜臀| 国产三级精品视频| 国精产品一区一区三区免费视频| 99久久er热在这里只有精品15| 亚洲三级在线视频| 国产精品一区在线观看你懂的| av污在线观看| 蜜臀91精品一区二区三区| 欧美激情国产精品日韩| 亚洲影视在线| 免费男同深夜夜行网站| 午夜在线一区| 成人羞羞国产免费网站| 久久久久久9| 久久9精品区-无套内射无码| 国产欧美日韩综合一区在线播放 | 高清不卡av| 欧美一乱一性一交一视频| 老司机深夜福利在线观看| 69av在线播放| 欧美极品影院| 国产精品视频一区国模私拍| 成人在线高清| 成人国产在线视频| 久久av偷拍| av一区二区三区四区电影| 亚洲第一二区| 国产在线欧美日韩| 欧美人体视频| 日韩成人av网站| 成人在线国产| 国产欧美综合一区| 雨宫琴音一区二区在线| 欧美色图色综合| 日韩影院精彩在线| 中文字幕久久av| 国产精品影视网| 色综合久久五月| 久久影院视频免费| 69xxx免费| 亚洲欧美另类小说视频| 国产精品19乱码一区二区三区| 好吊成人免视频| 在线播放国产一区| 日韩一卡二卡三卡| 天天综合天天色| 一区二区日韩精品| 超碰超碰在线| 欧美性一区二区三区| 免费成人高清在线视频| 成人黄色片视频网站| 日韩精品免费一区二区三区竹菊| 欧美一区二视频在线免费观看| 欧美国产偷国产精品三区| 蜜臀精品一区二区| 日韩精品欧美精品| 中文字幕在线观看91| 久久亚洲免费视频| 疯狂试爱三2浴室激情视频| 婷婷中文字幕综合| 91极品身材尤物theporn| 欧美一级日韩不卡播放免费| 姝姝窝人体www聚色窝| 一区二区三区亚洲| 福利在线免费视频| 国产有码在线一区二区视频| 精品国产影院| 在线精品日韩| 久久久久久网| 老司机av网站| 欧美激情在线看| 日韩在线观看第一页| 欧美人与禽zozo性伦| 天堂成人在线视频| 麻豆一区二区在线观看| 都市激情亚洲一区| 国产女主播一区二区| 国产精品成人a在线观看| 欧美日韩在线中文| 国产成人亚洲综合a∨婷婷| 性欧美一区二区| 狠狠久久亚洲欧美专区| www.久久久久久久久久| 色婷婷av一区二区三区久久| 色在线视频观看| 成人激情直播| 欧美日韩三区| 免费成人黄色大片| 国产欧美一区二区三区沐欲| 日韩av在线播放观看| 日韩一二三四区| 欧美成人高清在线| 国产精品日韩av| 国产精品嫩草影院在线看| 麻豆tv在线播放| 国产91精品一区二区麻豆网站| av最新在线观看| 欧美中文字幕一二三区视频| 日色在线视频| 91国产视频在线播放| 北条麻妃一区二区三区在线| 午夜在线视频免费观看| 裸体一区二区三区| 国产午夜精品久久久久久久久| 欧美日韩久久久久| 亚洲欧美日韩综合在线| 欧美精品久久久久久久| 亚洲国产aⅴ精品一区二区| 一级二级三级欧美| 老司机午夜精品| 永久免费看片直接| 欧美色精品在线视频| 成人在线免费观看| 国产精品va在线| 国产一区二区三区四区五区传媒| 欧美变态另类刺激| aa级大片欧美| xxxx.国产| 亚洲另类图片色| 日韩成人av电影| 日韩精品不卡| 日韩av中文字幕一区二区| 在线不卡av电影| 精品亚洲成av人在线观看| 亚洲综合久久av| 久久精品国产亚洲av麻豆色欲 | 国产va免费精品观看精品视频 | 国精产品一区一区三区mba视频 | 亚洲视频久久| 中国黄色片视频| 欧美午夜久久久| 岛国在线大片| 成人网在线免费观看| 你懂的网址国产 欧美| 香蕉在线观看视频| 疯狂做受xxxx欧美肥白少妇| 人成免费电影一二三区在线观看| 日本精品性网站在线观看| 日产精品一区二区| 日本r级电影在线观看| 亚洲午夜一二三区视频| 色播色播色播色播色播在线| 日韩av电影国产| 欧美激情偷拍自拍| 能看毛片的网站| 午夜精品免费在线| 成a人v在线播放| 91视频免费在线| 亚洲三级影院| 国产sm调教视频| 69av一区二区三区| 密臀av在线播放| 在线免费观看成人| 成人av在线观| 国产精品熟女视频| 欧美日韩国产二区| 蜜桃国内精品久久久久软件9| 亚洲这里只有精品| 亚洲国产日产av| 国产一级在线观看| 114国产精品久久免费观看| 午夜在线a亚洲v天堂网2018| 天堂а√在线中文在线鲁大师| 精品国产乱码久久久久久老虎 | 亚洲精品1区| 69精品无码成人久久久久久|