網站首頁 編程語言 正文
映射類型 — dict
字典可用多種方式來創建:
- 使用花括號內以逗號分隔鍵: 值對的方式: {‘jack’: 4098, ‘sjoerd’: 4127} or {4098:‘jack’, 4127: ‘sjoerd’}
- 使用字典推導式: {}, {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}
- 使用類型構造器: dict(), dict([(‘foo’, 100), (‘bar’, 200)]), dict(foo=100,bar=200)
字典所支持的操作:
list(d)
返回字典d 中使用的所有鍵的列表
len(d)
返回字典d 中的項數
d[key]
返回d 中以key 為鍵的項。如果映射中不存在key 則會引發KeyError。
如果字典的子類定義了方法__missing__() 并且key 不存在,則d[key] 操作將調用該方法并附帶鍵key 作為參數。d[key] 隨后將返回或引發__missing__(key) 調用所返回或引發的任何對象或異常。沒有其他操作或方法會發起調用__missing__()。如果未定義__missing__(),則會引發KeyError。missing() 必須是一個方法;它不能是一個實例變量:
>>> class Counter(dict): ... def __missing__(self, key): ... return 0 >>> c = Counter() >>> c['red'] 0 >>> c['red'] += 1 >>> c['red'] 1
上面的例子顯示了collections.Counter 實現的部分代碼。還有另一個不同的__missing__方法是由collections.defaultdict 所使用的。
d[key] = value
將d[key]設為value。
del d[key]
將d[key] 從d中移除。如果映射中不存在key 則會引發KeyError。
key in d
如果d中存在鍵key 則返回True,否則返回False。
iter(d)
返回以字典的鍵為元素的迭代器。這是iter(d.keys()) 的快捷方式。
clear()
移除字典中的所有元素。
copy()
返回原字典的淺拷貝
深copy
若你想徹底使2個dict完全獨立,無論有多少層數據。那就要用python工具包里的一個工具了
import copy data = { "name":"alex", "age":18, "scores":{ "語文":130, "數學":60, "英語":98, } } d2 = data.copy() d3 =copy.deepcopy(data) d3["scores"]["語文"] = 149 print(d3) print(data)
classmethod fromkeys(iterable[, value ]) fromkeys()
函數用于創建一個新字典,以序列 seq 中元素做字典的鍵,value 為字典所有鍵對應的初始值
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 未給出則默認為None,因而此方法絕不會引發KeyError。
items()
- 以列表返回視圖對象,是一個可遍歷的key/value對
-
dict.keys()
、dict.values()
和dict.items()
返回的都是視圖對象( view objects),提供了字典實體的動態視圖,這就意味著字典改變,視圖也會跟著變化
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),提供了字典實體的動態視圖,這就意味著字典改變,視圖也會跟著變化
a = {"a": 3, "b": 2} print(a.keys()) #
pop(key[, default ])
刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。
site= {'name': '菜鳥教程', 'alexa': 10000, 'url': 'www.runoob.com'} element = site.pop('name') print('刪除的元素為:', element) print('字典為:', site) """ 刪除的元素為: 菜鳥教程 字典為: {'alexa': 10000, 'url': 'www.runoob.com'} """
popitem()
- popitem() 方法隨機返回并刪除字典中的最后一對鍵和值。
- 如果字典已經為空,卻調用了此方法,就報出KeyError異常。
- 返回一個鍵值對(key,value)形式,按照 LIFO(Last In First Out后進先出法)順序規則,即最末尾的鍵值對。
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()方法 類似, 如果鍵不存在于字典中,將會添加鍵并將值設為默認值。
tinydict = {'Name': 'Runoob', 'Age': 7} print ("Age 鍵的值為 : %s" % tinydict.setdefault('Age', None)) print ("Sex 鍵的值為 : %s" % tinydict.setdefault('Sex', None)) print ("新字典為:", tinydict)
update([other ])
update() 函數把字典參數 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),提供了字典實體的動態視圖,這就意味著字典改變,視圖也會跟著變化
a = {"a": 3, "b": 2} print(a.values()) # dict_values([3, 2])
d | other
合并d 和other 中的鍵和值來創建一個新的字典,兩者必須都是字典。當d 和other 有相同鍵時,other 的值優先。3.9才支持
a = {"apple": 3, "banana": 4}b = {"grape": 5, "banana": 8}print(a | b)
d |= other
- 用other 的鍵和值更新字典d ,other 可以是mapping 或iterable 的鍵值對。當d 和other 有相同鍵時,other 的值優先。
- 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} """
總結
原文鏈接:https://blog.csdn.net/sinat_28317385/article/details/123467435
相關推薦
- 2022-12-21 Python中的取整、取余運算方法_python
- 2022-05-31 postman批量執行接口測試的圖文步驟_其它綜合
- 2022-10-02 React構建組件的幾種方式及區別_React
- 2022-10-10 ASP.NET?MVC使用jQuery?ui的progressbar實現進度條_實用技巧
- 2022-05-29 一起來看看C語言的預處理注意點_C 語言
- 2022-07-19 Linux bond模式工作模式與原理
- 2022-10-03 如何在python中實現capl語言里的回調函數(推薦)_python
- 2023-07-05 parcel運行終端報錯Uncaught ReferenceError: parcelRequire
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支