Python3字典詳解

建立和使用字典

字典能夠用下面方式建立:html

phoneBook = {"Bill":"1234", "Mike":"4321"}

字典中,鍵是惟一的。若是鍵不惟一,那麼程序也不會拋出異常,只是相同的鍵值會被最後一個覆蓋:python

phoneBook = {"Bill":"1234", "Mike":"4321", "Bill":"5678"}
# 若是經過 Bill 定位,那麼查到的值是 "5678"

dict函數

能夠用 dick 函數,經過其餘映射或鍵值對的序列創建字典。函數

items = [["Bill","1234"], ("Mike","4321")]
d1 = dict(items)
d2 = dict(name = 'Bill', number = '5678', age = 45)
print(d1) # {'Bill': '1234', 'Mike': '4321'}
print(d2) # {'name': 'Bill', 'number': '5678', 'age': 45}

字典的基本操做

  • 字典的不少操做與列表相似:
    • len(dict):返回字典dict中元素的數量
    • dict[key]:返回關聯到key上的值
    • dict[key] = value:爲key賦值
    • del dict[key]:刪除鍵爲key的項
    • key in dict:檢查dict中是否包含有鍵爲key的項

字典的格式化字符串(format_map()方法)

dic = {'title':'MyTitle', 'url':'http://www.aaa.com', 'company':'Zerobit'}

str = """
<html>
	<head>
		<title>{title}</title>
	<head>
	<body>
		<h1>{title}</h1>
		<a href="{url}">{company}</a>
	</body>
</html>
"""
print(str.format_map(dic))

字典的迭代

1. 獲取字典中key的列表

dic = {'x':1, 'y':2, 'z':3}
# 輸出 x y z
for key in dic:
	print(key, end=' ')

2. 同時獲取字典中的key和value列表

dic = {'x':1, 'y':2, 'z':3}
for key,value in dic.items():
	print(key, value)

字典方法

clear方法

  • clear方法用於清空字典中的全部元素
dic = {'x':1, 'y':2, 'z':3}
dic.clear()

copy方法與deepcopy函數

  • copy方法用於複製一個字典,該方法返回複製後的新字典
dic = {'x':1, 'y':2, 'z':3}
newDic = dic.copy()

copy方法只是淺複製,只複製 第1層 的字典數據。至於第2層及如下的全部層,原字典和新字典都指向同一個值,無論是修改原字典的這些元素,仍是新字典中的這些元素,原字典和新字典中的這些元素都會同時改變。url

  • 若是想改上面的狀況,就須要使用 copy 模塊中的 deepcopy 函數進行深層複製
from copy import deepcopy
dic = {'x':1, 'y':2, 'z':3}
newDic = deepcopy(dic)

fromkeys方法

  • fromkeys方法用於根據key創建新的字典。在新的字典中,全部的key都有相同的默認值。
# 在一個空字典上調用fromkeys方法建立一個新字典,經過列表指定key
newDic1 = {}.fromkeys(['name', 'company', 'salary'])
print(newDic1) # {'name': None, 'company': None, 'salary': None}
newDic2 = {}.fromkeys(['name', 'company', 'salary'], 100)
print(newDic2) # {'name': 100, 'company': 100, 'salary': 100}

get方法

使用dict[key]的形式從字典獲取value時,若是key不存在,則會拋KeyError異常code

  • 若是想避免key不存在拋異常的狀況,則需使用 get()方法
dic = {'x':1, 'y':2, 'z':3}
print(dic.get('a')) # None

items方法和keys方法

  • items方法用於返回字典中全部的 key-value 對,可用於迭代。
  • keys方法用於返回字典中全部的 key,也可用於迭代。

pop方法和popitem方法

  • pop方法用於獲取指定key的值,並從字典中彈出這個 key-value 對。
  • popitem方法用於返回並彈出字典中最後一個 key-value 對。

對於字典來講,裏面的元素並無順序,因此這裏所說的最後一個 key-value 對,是指最後一個添加的 key-value 對。orm

dic = {'c':10, 'a':40, 'b':12, 'x':44}
dic['z'] = 3
print(dic.pop('b')) # 12
print(dic.popitem()) # ('z', 3)
print(dic) # {'c': 10, 'a': 40, 'x': 44}

setdefault方法

  • setdefault方法用於設置key的默認值。該方法接收兩個參數,第1個表示 key,第2個參數表示默認值。若是key不存在,則會向字典中添加這個key和默認值
dic = {}
dic.setdefault("name","alex")
print(dic) # {'name': 'alex'}

update方法

  • update方法能夠用一個字典中的元素更新另一個字典。
dic1 = {'c':10, 'a':40, 'b':12, 'x':44}
dic2 = {'name': 'Bill', 'number': '5678', 'x': 150}
dic1.update(dic2)
print(dic1) # {'c': 10, 'a': 40, 'b': 12, 'x': 150, 'name': 'Bill', 'number': '5678'}

若是dict2中的 key-value 對在dict1中不存在,那麼會在dict1中添加一個新的 key-value 對。若是dict1已經存在這個key,那麼會用dict2中key對應的值更新dict1中key的值。htm

values方法

  • values方法用於以迭代器形式返回字典中值的列表
dic = {'c':10, 'a':40, 'b':12, 'x':44}
for val in dic.values():
	print(val, end=' ') # 10 40 12 44
相關文章
相關標籤/搜索