網(wǎng)站首頁 編程語言 正文
映射類型 — dict
字典可用多種方式來創(chuàng)建:
- 使用花括號內(nèi)以逗號分隔鍵: 值對的方式: {‘jack’: 4098, ‘sjoerd’: 4127} or {4098:‘jack’, 4127: ‘sjoerd’}
- 使用字典推導(dǎo)式: {}, {x: x ** 2 for x in range(10)}
dict_a = {key: value for key in 'python' for value in range(2)} list_phone = [('HUAWEI', '華為'), ('MI', '小米'), ('OPPO', 'OPPO'), ('VIVO', 'VIVO')] dict_c = {key: value for key, value in list_phone}
- 使用類型構(gòu)造器: dict(), dict([(‘foo’, 100), (‘bar’, 200)]), dict(foo=100,bar=200)
字典所支持的操作:
list(d)
返回字典d 中使用的所有鍵的列表
len(d)
返回字典d 中的項數(shù)
d[key]
返回d 中以key 為鍵的項。如果映射中不存在key 則會引發(fā)KeyError。
如果字典的子類定義了方法__missing__() 并且key 不存在,則d[key] 操作將調(diào)用該方法并附帶鍵key 作為參數(shù)。d[key] 隨后將返回或引發(fā)__missing__(key) 調(diào)用所返回或引發(fā)的任何對象或異常。沒有其他操作或方法會發(fā)起調(diào)用__missing__()。如果未定義__missing__(),則會引發(fā)KeyError。missing() 必須是一個方法;它不能是一個實例變量:
>>> class Counter(dict): ... def __missing__(self, key): ... return 0 >>> c = Counter() >>> c['red'] 0 >>> c['red'] += 1 >>> c['red'] 1
上面的例子顯示了collections.Counter 實現(xiàn)的部分代碼。還有另一個不同的__missing__方法是由collections.defaultdict 所使用的。
d[key] = value
將d[key]設(shè)為value。
del d[key]
將d[key] 從d中移除。如果映射中不存在key 則會引發(fā)KeyError。
key in d
如果d中存在鍵key 則返回True,否則返回False。
iter(d)
返回以字典的鍵為元素的迭代器。這是iter(d.keys()) 的快捷方式。
clear()
移除字典中的所有元素。
copy()
返回原字典的淺拷貝
深copy
若你想徹底使2個dict完全獨立,無論有多少層數(shù)據(jù)。那就要用python工具包里的一個工具了
import copy data = { "name":"alex", "age":18, "scores":{ "語文":130, "數(shù)學(xué)":60, "英語":98, } } d2 = data.copy() d3 =copy.deepcopy(data) d3["scores"]["語文"] = 149 print(d3) print(data)
classmethod fromkeys(iterable[, value ]) fromkeys()
函數(shù)用于創(chuàng)建一個新字典,以序列 seq 中元素做字典的鍵,value 為字典所有鍵對應(yīng)的初始值
seq = ('Google', 'Runoob', 'Taobao') thisdict = dict.fromkeys(seq) print "新字典為 : %s" % str(dict) thisdict = dict.fromkeys(seq, 10) print "新字典為 : %s" % str(thisdict) """ 新的字典為 : {'age': None, 'name': None, 'sex': None} 新的字典為 : {'age': 10, 'name': 10, 'sex': 10} """
get(key[, default ])
如果key 存在于字典中則返回key 的值,否則返回default。如果default 未給出則默認(rèn)為None,因而此方法絕不會引發(fā)KeyError。
items()
- 以列表返回視圖對象,是一個可遍歷的key/value對
-
dict.keys()
、dict.values()
和dict.items()
返回的都是視圖對象( view objects),提供了字典實體的動態(tài)視圖,這就意味著字典改變,視圖也會跟著變化
tinydict = {'Name': 'Runoob', 'Age': 7} print ("Value : %s" % tinydict.items()) # Value : dict_items([('Age', 7), ('Name', 'Runoob')])
keys()
返回由字典鍵組成的一個新視圖
dict.keys()
、dict.values()
和 dict.items()
返回的都是視圖對象( view objects),提供了字典實體的動態(tài)視圖,這就意味著字典改變,視圖也會跟著變化
a = {"a": 3, "b": 2} print(a.keys()) #
pop(key[, default ])
刪除字典給定鍵 key 所對應(yīng)的值,返回值為被刪除的值。
site= {'name': '菜鳥教程', 'alexa': 10000, 'url': 'www.runoob.com'} element = site.pop('name') print('刪除的元素為:', element) print('字典為:', site) """ 刪除的元素為: 菜鳥教程 字典為: {'alexa': 10000, 'url': 'www.runoob.com'} """
popitem()
- popitem() 方法隨機返回并刪除字典中的最后一對鍵和值。
- 如果字典已經(jīng)為空,卻調(diào)用了此方法,就報出KeyError異常。
- 返回一個鍵值對(key,value)形式,按照 LIFO(Last In First Out后進(jìn)先出法)順序規(guī)則,即最末尾的鍵值對。
site= {'name': '菜鳥教程', 'alexa': 10000, 'url': 'www.runoob.com'} pop_obj=site.popitem() print(pop_obj) print(site)
reversed(d)
返回一個逆序獲取字典鍵的迭代器。這是reversed(d.keys()) 的快捷方式
setdefault(key[, default ])
setdefault() 方法和 get()方法 類似, 如果鍵不存在于字典中,將會添加鍵并將值設(shè)為默認(rèn)值。
tinydict = {'Name': 'Runoob', 'Age': 7} print ("Age 鍵的值為 : %s" % tinydict.setdefault('Age', None)) print ("Sex 鍵的值為 : %s" % tinydict.setdefault('Sex', None)) print ("新字典為:", tinydict)
update([other ])
update() 函數(shù)把字典參數(shù) dict2 的 key/value(鍵/值) 對更新到字典 dict 里
tinydict = {'Name': 'Runoob', 'Age': 7} tinydict2 = {'Sex': 'female' } tinydict.update(tinydict2) print ("更新字典 tinydict : ", tinydict)
values()
返回一個視圖對象,dict.keys()、dict.values() 和 dict.items() 返回的都是視圖對象( view objects),提供了字典實體的動態(tài)視圖,這就意味著字典改變,視圖也會跟著變化
a = {"a": 3, "b": 2} print(a.values()) # dict_values([3, 2])
d | other
合并d 和other 中的鍵和值來創(chuàng)建一個新的字典,兩者必須都是字典。當(dāng)d 和other 有相同鍵時,other 的值優(yōu)先。3.9才支持
a = {"apple": 3, "banana": 4}b = {"grape": 5, "banana": 8}print(a | b)
d |= other
- 用other 的鍵和值更新字典d ,other 可以是mapping 或iterable 的鍵值對。當(dāng)d 和other 有相同鍵時,other 的值優(yōu)先。
- 3.9 新版功能
a = {"one": 1, "two": 2, "three": 3} a |= {"three": 30, "four": 4, "five": 5} print(a) a = {"apple": 3, "banana": 4} b = {"grape": 5, "banana": 8} a |= b print(a) """ {'one': 1, 'two': 2, 'three': 30, 'four': 4, 'five': 5} {'apple': 3, 'banana': 8, 'grape': 5} """
總結(jié)
原文鏈接:https://blog.csdn.net/sinat_28317385/article/details/123467435
相關(guān)推薦
- 2023-03-16 Python庫functools示例詳解_python
- 2022-06-15 golang?gorm的關(guān)系關(guān)聯(lián)實現(xiàn)示例_Golang
- 2022-09-21 Golang?channel為什么不會阻塞的原因詳解_Golang
- 2022-07-13 Dos攻擊Tomcat導(dǎo)致coredump問題分析
- 2022-06-22 利用Docker?運行?python?簡單程序_docker
- 2022-07-26 ES對比兩個索引的數(shù)據(jù)差
- 2022-02-02 Spring boot 項目目錄結(jié)構(gòu)
- 2022-07-21 將本地jar添加到Maven倉庫,使用pom.xml引用
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支