Python數(shù)據(jù)結(jié)構(gòu)dict常用操作代碼實(shí)例
dict是python中的常用數(shù)據(jù)結(jié)構(gòu),應(yīng)該盡量掌握其使用方法
字典是另一種可變?nèi)萜髂P?,且可存?chǔ)任意類(lèi)型對(duì)象。
字典的每個(gè)鍵值 key=>value 對(duì)用冒號(hào) : 分割,每個(gè)鍵值對(duì)之間用逗號(hào) , 分割,整個(gè)字典包括在花括號(hào) {} 中
代碼如下
""" 初始化一個(gè)dict的四種方式: 1. dict() -> 創(chuàng)建一個(gè)空的dict 2. dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs 3. dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v 4. dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2) """ # 第一種方式 d = dict() # 第二種方式 # d = {"person": {"name": "admin", "age": 12}, # "animal": {"name": "gaodan", "age": 3}, # } # 第三種方式 d = dict({"name": "admin"}) print(d) # 第四種方式 d = dict(name='admin', age=12) print(type(d)) print("原字典:%s" % d) # {'name': 'admin', 'age': 12} # clear, 清空 # d.clear() # print(d) # copy 淺拷貝 new_d = d.copy() print("copy出的新字典:%s" % new_d) # {'name': 'admin', 'age': 12} new_d['name'] = 'root' print('修改之后的copy字典:%s' % new_d) # 修改之后的copy字典:{'name': 'root', 'age': 12} print("修改之后的原字典:%s" % d) # {'name': 'admin', 'age': 12} # 總結(jié): copy淺拷貝簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)時(shí),創(chuàng)建了一個(gè)新的對(duì)象,修改新dict中的值,不會(huì)引起原有dict中值的變化 print('*' * 50) d = {"person": {"name": "admin", "age": 12}, "animal": {"name": "gaodan", "age": 3} } print(d) # {'person': {'name': 'admin', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}} new_d = d.copy() new_d['person']['name'] = 'root' print(new_d) # {'person': {'name': 'root', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}} print(d) # {'person': {'name': 'root', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}} # 總結(jié): 淺拷貝: copy淺拷貝復(fù)雜數(shù)據(jù)結(jié)構(gòu)時(shí),只是指向了這個(gè)復(fù)雜數(shù)據(jù)結(jié)構(gòu)的引用,并沒(méi)有創(chuàng)建一個(gè)新的對(duì)象.所以修改new_d這個(gè)新dict的值時(shí),原dict中的值也發(fā)生變化.如果是簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu),不存在這類(lèi)情況,上面也有示例 """ python中的深拷貝 需要 import copy copy.deepcopy() """ print('--------------------deep copy------------------') import copy d = {"person": {"name": "admin", "age": 12}, "animal": {"name": "gaodan", "age": 3} } print(d) dd = copy.deepcopy(d) print(dd) # {'person': {'name': 'admin', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}} dd['person']['name'] = '啞巴' print(dd) # {'person': {'name': '啞巴', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}} print(d) # {'person': {'name': 'admin', 'age': 12}, 'animal': {'name': 'gaodan', 'age': 3}} # fromkeys, 創(chuàng)建一個(gè)新的dict ,key是序列中的值 d = dict.fromkeys(['jet','lily'],{"name":"mam"}) print(d) # {'jet': {'name': 'mam'}, 'lily': {'name': 'mam'}} # get .取值 ,沒(méi)有就是None value = d.get("jet") print(value) #{'name': 'mam'} d = {"name":'admin','age':12} #items 方法 kv = d.items() for k,v in kv: print(k,v) keys = d.keys() print(keys) # dict_keys(['name', 'age']) # pop(key) 移除指定的key 對(duì)應(yīng)的kv # value = d.pop('name') # 刪除name 鍵值對(duì) # print(value) # admin # print(d) # {'age': 12} # popitem 移除后面的一組item popitem = d.popitem() print(popitem) # ('age', 12) 移除了這一對(duì)映射關(guān)系 print(d) # {'name': 'admin'} d 還剩下這玩藝 d = {"name":'admin','age':12} # setdefault(k,v) , 如果原dict有中k, 就返回原dict中k-->v , 否則就將k,v添加到dict中 default_value = d.setdefault('female', 'ali') print(default_value) print(d) # {'name': 'admin', 'age': 12, 'female': 'ali'} default_value = d.setdefault('female', 'jd') print(default_value) # ali print(d) # {'name': 'admin', 'age': 12, 'female': 'ali'} # update. 往dict中添加元素 # 使用update的第一種方式 ,注意key沒(méi)有加引號(hào) # d.update(book='python',teacher='dog') print(d) # {'name': 'admin', 'age': 12, 'female': 'ali', 'book': 'python', 'teacher': 'dog'} #使用update的第二種方式 d.update([('teacher','dog'),{'book','java'}]) #好吊的樣子 print(d) #{'name': 'admin', 'age': 12, 'female': 'ali', 'teacher': 'dog', 'book': 'java'} # values vs = d.values() print(vs) #dict_values(['admin', 12, 'ali', 'dog', 'java'])
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python基礎(chǔ)之?dāng)?shù)據(jù)結(jié)構(gòu)詳解
- python中常用的數(shù)據(jù)結(jié)構(gòu)介紹
- python實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)中雙向循環(huán)鏈表操作的示例
- Python描述數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之哈夫曼樹(shù)篇
- 淺談Python描述數(shù)據(jù)結(jié)構(gòu)之KMP篇
- 基于python實(shí)現(xiàn)模擬數(shù)據(jù)結(jié)構(gòu)模型
- 基于Python數(shù)據(jù)結(jié)構(gòu)之遞歸與回溯搜索
- 淺析Python語(yǔ)言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些
- Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-堆棧和隊(duì)列的操作方法
- Python 實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列的操作方法
- 4種非常實(shí)用的python內(nèi)置數(shù)據(jù)結(jié)構(gòu)
相關(guān)文章
Python巧用SnowNLP實(shí)現(xiàn)生成srt字幕文件
SnowNLP是一個(gè)可以方便的處理中文文本內(nèi)容的python類(lèi)庫(kù),本文主要為大家詳細(xì)介紹了Python如何巧用SnowNLP實(shí)現(xiàn)將一段話(huà)一鍵生成srt字幕文件,感興趣的可以了解下2024-01-01基于numpy.random.randn()與rand()的區(qū)別詳解
下面小編就為大家分享一篇基于numpy.random.randn()與rand()的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04python 統(tǒng)計(jì)list中各個(gè)元素出現(xiàn)的次數(shù)的幾種方法
這篇文章主要介紹了python 統(tǒng)計(jì)list中各個(gè)元素出現(xiàn)的次數(shù)的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Python數(shù)據(jù)可視化之簡(jiǎn)單折線(xiàn)圖的繪制
這篇文章主要為大家詳細(xì)介紹了Python數(shù)據(jù)可視化之繪制簡(jiǎn)單折線(xiàn)圖的相關(guān)資料,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以了解一下2022-10-10對(duì)python3 一組數(shù)值的歸一化處理方法詳解
今天小編就為大家分享一篇對(duì)python3 一組數(shù)值的歸一化處理方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07在Python中使用Neo4j數(shù)據(jù)庫(kù)的教程
這篇文章主要介紹了在Python中使用Neo4j數(shù)據(jù)庫(kù)的教程,Neo4j是一個(gè)具有一定人氣的非關(guān)系型的數(shù)據(jù)庫(kù),需要的朋友可以參考下2015-04-04使用python將CSV和Excel表格數(shù)據(jù)導(dǎo)入到Word表格
在不同格式的文檔之間進(jìn)行數(shù)據(jù)傳輸是非常重要的操作,例如將CSV和Excel表格數(shù)據(jù)導(dǎo)入到Word文檔中,不僅可以實(shí)現(xiàn)數(shù)據(jù)的有效整合與展示,還能極大地提升工作效率和文檔的專(zhuān)業(yè)性,本文將介紹如何使用Python將CSV和Excel表格數(shù)據(jù)導(dǎo)入到Word文檔中并創(chuàng)建表格2024-09-09Python實(shí)現(xiàn)讀取文件最后n行的方法
這篇文章主要介紹了Python實(shí)現(xiàn)讀取文件最后n行的方法,涉及Python針對(duì)文件的讀取、遍歷與運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-02-02