Python-Dictionary-創建字典的方式

字典

我們創建字典的方式有很多,根據需求不同,採用合適的方式才能夠事半功倍。
我使用的Python3.0 版本,所以較之2.X的版本,新增瞭解析式創建法。

1.{}

我稱這個方法爲一個花括號搞定法,此方法適合你知道字典中的內容已經是什麼了,一次性的將字典創建出來。後期字典變化不頻繁的情況。

"""
1. 一個花括號搞定全部法
"""

D={'name':'Bob','age':14,'sex':'male'}
print(D)

輸出:

{'name': 'Bob', 'age': 14, 'sex': 'male'}

2.D={}

當面對後期再一次次對字典中的字段進行添加的情況,我們先用一個空字典的方式,給D佔一個字典的坑,然後再後面的程序中,一個個補上其中的內容。這就適合需要動態建立字段的情況。

"""
2. 後期需要動態建立字典的字段
"""
D={}
D['name']='Bob'
D['age']=14
D['sex']='male'
print(D)

輸出:

{'name': 'Bob', 'age': 14, 'sex': 'male'}

3.dict(key1=value1,key1=value2,…)

此方法使用起來比較方便,而且簡單,代碼量小~

"""
3. dict(key1=value1,...)等號形式
"""
D=dict(name='Bob',age=14,sex='male')
print(D)

輸出:

{'name': 'Bob', 'age': 14, 'sex': 'male'}

4.dict([(key1,value1),(key2,value2),…])

使用(key,value)pair的形式,來創建一個個映射關係對象。
如果需要再程序運行的時候,把鍵和值逐步建成序列。

此方法還常結合zip函數來使用,把程序運行時候的動態獲取到的鍵和值的不同列表合併在一起。

"""
4.dict([(key1,value1),(key2,value2),...])
"""
D=dict([("name","Bob"),("age",14),("sex",'male')])
print(D)

輸出:
{‘name’: ‘Bob’, ‘age’: 14, ‘sex’: ‘male’}

結合zip函數的使用方式


D=dict(zip(['name','age','sex'],['Bob',14,'male']))
print("zip way:",D)

輸出

zip way: {'name': 'Bob', 'age': 14, 'sex': 'male'}

5.dict.fromkeys(key[,default])

根據seq提供的key值與value值創建一個新的字典。
value值如果沒有給出,默認爲none。

如果所建的字典的鍵的value值都一樣的話,簡單得傳入一個鍵列表,以及所有鍵對應得初始值。

"""
5.dict.fromkeys(key[,default])
如果所建的字典的鍵的value值都一樣的話,簡單得傳入一個鍵列表,以及所有鍵對應得初始值。
"""
key_list=['name','age','sex']
D=dict.fromkeys(key_list,0)
print("keylist:",key_list)
print("Dictionary:",D)

輸出:

keylist: ['name', 'age', 'sex']
Dictionary: {'name': 0, 'age': 0, 'sex': 0}

6.dict(iterator)字典解析表達式

在Python 3.0中,對比過去得2.X版本得一個很大得不同,就是字典得創建,支持解析表達式得方式。

採用這個方式,調用dict()構造函數,傳入一個迭代器對象。

D={k:v for (k,v) in zip(['name','age','sex'],['Bob',14,'male'])}
print(D)

輸入:

{'name': 'Bob', 'age': 14, 'sex': 'male'}

這個方式能夠達到直接使用zip()函數一樣的目的,但是看着比zip函數更加繁瑣。
其實解析表達式使用的場景要比zip函數更多,更靈活更方便。

一大批例子來襲

1.

D={k:k **2 for k in [1,2,3,4]}
print(D)

輸出

D={k:k **2 for k in [1,2,3,4]}
print(D)

2.

D={c:c * 4 for c in 'SPAM'}
print(D)

輸出

{'S': 'SSSS', 'P': 'PPPP', 'A': 'AAAA', 'M': 'MMMM'}

3.

'''
還可以結合一些函數來使用
'''

D={k.lower():k+'!' for k in'HAPPY' }
print(D)

輸出

{'h': 'H!', 'a': 'A!', 'p': 'P!', 'y': 'Y!'}

4.可以達到初始化value的目的

'''
達到fromkeys 一樣的效果
'''
D={k:"初始值" for k in ['sex','name','age']}
print(D)

輸出

{'sex': '初始值', 'name': '初始值', 'age': '初始值'}

字典解析:

字典解析還可以包括嵌套循環,以及if字句等等形式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章