日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中map函数字典映射_python Chainmap函数(19)

發布時間:2024/9/19 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中map函数字典映射_python Chainmap函数(19) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們有多個字典,想把它們合并成為一個單獨的字典,有人說可以用update進行合并,這樣做的問題就是新建了一個數據結構以至于當我們對原來的字典進行更改的時候不會同步。如果想建立一個同步的查詢方法,可以使用ChainMap。

python內置函數ChainMap可以將多個字典合并為一個獨有的字典,這樣的操作 并不是對源數據的拷貝,而是指向源數據,假如原字典數據修改,ChainMap映射也會改變;如果對ChainMap的結果修改,那么原數據一樣也會被修改,這樣就不會造成數據不同步的問題,當然需要因使用場景而定。

一.ChainMap合并多個字典

使用ChainMap可以將多個字典串聯起來,當做一個字典來處理。

#!usr/bin/env python#-*- coding:utf-8 _*-

"""@Author:何以解憂

@Blog(個人博客地址): shuopython.com

@WeChat Official Account(微信公眾號):猿說python

@Github:www.github.com

@File:python_chainmap.py

@Time:2019/11/20 21:25

@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!"""

from collections importChainMap

dict1= {"a":"zhangsan","b":"lisi"}

dict2= {"c":"wangwu"}

dict3= {"d":"liqui","e":"laowang"}

new_dict=ChainMap(dict1,dict2,dict3)print(new_dict)print(type(new_dict))------------------------------------------------------------------------------------------輸出結果:

ChainMap({'a': 'zhangsan', 'b': 'lisi'}, {'c': 'wangwu'}, {'d': 'liqui', 'e': 'laowang'})

二.ChainMap查詢和遍歷

ChainMap函數將多個字典合并為一個字典,查詢和遍歷的方式和對普通字典的操作方式一樣,示例代碼如下:

from collections importChainMap

dict1= {"a":"zhangsan","b":"lisi"}

dict2= {"c":"wangwu"}

dict3= {"d":"liqui","b":"laowang"}

new_dict=ChainMap(dict1,dict2,dict3)#查詢,可以直接根據key值查新,和字典操作方式一樣

print(new_dict["a"])print(new_dict["b"]) #當多個字典中有相同的key值是,默認取第一個key對應的value

print(new_dict["c"])print("***"*20)#遍歷,可以直接根據key或者value遍歷,和普通字典一樣操作

for key,value innew_dict.items():print(key,":",value)

輸出結果:

zhangsan

lisi

wangwu************************************************************e : laowang

c : wangwu

d : liqui

a : zhangsan

b : lisi

注意:如果在使用ChainMap合并多個字典時,字典中有重復的key值,默認取第一個字典中key對用的value,從原理上面講,ChainMap實際上是把放入的字典存儲在一個隊列中,當進行字典的增加刪除等操作只會在第一個字典上進行,當進行查找的時候會依次查找!

三.ChainMap修改

maps 方法會將串聯起來的字典以列表的形式展示,示例代碼如下:

from collections importChainMap

dict1= {"a":"zhangsan","b":"lisi"}

dict2= {"c":"wangwu"}

dict3= {"d":"liqui","b":"laowang"}

new_dict=ChainMap(dict1,dict2,dict3)print("new_dict修改數據之后:",new_dict)print("dict1修改數據之前:",dict1)#操作列表中索引值為0的字典,修改key="a"對應的value

new_dict.maps[0]["a"]=18

print("new_dict修改數據之后:",new_dict)print("dict1修改數據之后:",dict1)

輸出結果:

new_dict修改數據之后: ChainMap({'a': 'zhangsan', 'b': 'lisi'}, {'c': 'wangwu'}, {'d': 'liqui', 'b': 'laowang'})

dict1修改數據之前: {'a': 'zhangsan', 'b': 'lisi'}

new_dict修改數據之后: ChainMap({'a': 18, 'b': 'lisi'}, {'c': 'wangwu'}, {'d': 'liqui', 'b': 'laowang'})

dict1修改數據之后: {'a': 18, 'b': 'lisi'}

注意:ChainMap使用就是原始字典,共用同一內存地址,因此原始數據修改,ChainMap映射也會改變;如果對ChainMap的結果修改,那么原數據一樣也會被修改

四.ChainMap增加

可以通過new_child()函數添加一個新的空白字典,然后像普通字典一樣操作添加數據,示例代碼如下:

from collections importChainMap

dict1= {"a":"zhangsan","b":"lisi"}

dict2= {"c":"wangwu"}#合并字典

new_dict =ChainMap(dict1,dict2)print(new_dict)#添加數據

new_dict1 =new_dict.new_child()print(new_dict1)

new_dict1["x"]=0

new_dict1["y"] = 100.0

print(new_dict1)

輸出結果:

ChainMap({'a': 'zhangsan', 'b': 'lisi'}, {'c': 'wangwu'})

ChainMap({}, {'a': 'zhangsan', 'b': 'lisi'}, {'c': 'wangwu'})

ChainMap({'x': 0, 'y': 100.0}, {'a': 'zhangsan', 'b': 'lisi'}, {'c': 'wangwu'})

總結:

總結

以上是生活随笔為你收集整理的python中map函数字典映射_python Chainmap函数(19)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。