Python資料結構dict常用操作程式碼例項
阿新 • • 發佈:2020-03-13
dict是python中的常用資料結構,應該儘量掌握其使用方法
字典是另一種可變容器模型,且可儲存任意型別物件。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個鍵值對之間用逗號,分割,整個字典包括在花括號 {} 中
程式碼如下
""" 初始化一個dict的四種方式: 1. dict() -> 建立一個空的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} # 總結: copy淺拷貝簡單資料結構時,建立了一個新的物件,修改新dict中的值,不會引起原有dict中值的變化 print('*' * 50) d = {"person": {"name": "admin","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': 3}} print(d) # {'person': {'name': 'root','age': 3}} # 總結: 淺拷貝: copy淺拷貝複雜資料結構時,只是指向了這個複雜資料結構的引用,並沒有建立一個新的物件.所以修改new_d這個新dict的值時,原dict中的值也發生變化.如果是簡單資料結構,不存在這類情況,上面也有示例 """ python中的深拷貝 需要 import copy copy.deepcopy() """ print('--------------------deep copy------------------') import copy d = {"person": {"name": "admin","age": 3} } print(d) dd = copy.deepcopy(d) print(dd) # {'person': {'name': 'admin','age': 3}} dd['person']['name'] = '啞巴' print(dd) # {'person': {'name': '啞巴','age': 3}} print(d) # {'person': {'name': 'admin','age': 3}} # fromkeys,建立一個新的dict,key是序列中的值 d = dict.fromkeys(['jet','lily'],{"name":"mam"}) print(d) # {'jet': {'name': 'mam'},'lily': {'name': 'mam'}} # get .取值,沒有就是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 對應的kv # value = d.pop('name') # 刪除name 鍵值對 # print(value) # admin # print(d) # {'age': 12} # popitem 移除後面的一組item popitem = d.popitem() print(popitem) # ('age',12) 移除了這一對對映關係 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','female': 'ali'} # update. 往dict中新增元素 # 使用update的第一種方式,注意key沒有加引號 # d.update(book='python',teacher='dog') print(d) # {'name': 'admin','female': 'ali','book': 'python','teacher': 'dog'} #使用update的第二種方式 d.update([('teacher','dog'),{'book','java'}]) #好吊的樣子 print(d) #{'name': 'admin','teacher': 'dog','book': 'java'} # values vs = d.values() print(vs) #dict_values(['admin',12,'ali','dog','java'])
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。