1. 程式人生 > 程式設計 >Python資料結構dict常用操作程式碼例項

Python資料結構dict常用操作程式碼例項

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'])

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。