字典是有“鍵-值”對組成的集合,字典中的“值”通過“鍵”來引用【馗福“鍵-值”對之間用逗號隔開,并且被包含在一對花括號中铺厨。
字典的創(chuàng)建
格式
dictionary_name = {key1 : value1, key2 : value2, ...}
創(chuàng)建空的字典
dictionary_name = {}
例如
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict
輸出
{'s': 'shanghai', 'b': 'beijing', 'g': 'guangzhou', 'w': 'wuhan'}
注意:字典將會按照每個元素的Hashcode值進行排序,而且硬纤,字典的“鍵”是區(qū)分大小寫的解滓。
字典的訪問
字典與元組或者列表不同,不是通過索引訪問的筝家,而是通過“鍵”值訪問value值的洼裤。
格式
value = dictionary_name[key]
例如
#coding:UTF-8
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict
#訪問'shanghai'
print dict['s']
字典元素的添加和修改
在字典中,只需一條賦值語句就實現(xiàn)了字典元素的添加和修改溪王,所不同的是,若增加的元素在字典中不存在就是添加莹菱,若已經(jīng)存在就是修改缕减。
例如
#coding:UTF-8
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict
#添加{'c' : 'chongqing'}
dict['c'] = 'chongqing'
print dict
#修改'wuhan'為'wuchang'
dict['w'] = 'wuchang'
print dict
字典中的常用方法
方法名 | 說明 |
---|---|
items() | 返回(key,value)元組組成的列表 |
iteritems() | 返回指向字典的遍歷器 |
setdefault(k[,d]) | 創(chuàng)建新的元素并設(shè)置默認值 |
pop(k[,d]) | 刪除索引k對應(yīng)的value值搅裙,并返回該值 |
get(k[,d]) | 返回索引k對應(yīng)的value值 |
keys() | 返回字典中 key 的列表 |
values() | 返回字典中 value的列表 |
update(E) | 把字典E中的數(shù)據(jù)擴展到原字典中 |
sorted() | 排序 |
copy() | 復(fù)制一個字典中所有的數(shù)據(jù) |
- items方法主要用于實現(xiàn)字典的遍歷操作皱卓,返回的是由若干元組組成的列表。
#coding:UTF-8
#items()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.items()
輸出
[('s', 'shanghai'), ('b', 'beijing'), ('g', 'guangzhou'), ('w', 'wuhan')]
#coding:UTF-8
#使用items()方法遍歷字典
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
for (k, v) in dict.items():
print 'dict[%s] = ' % k ,v
輸出
dict[s] = shanghai
dict[b] = beijing
dict[g] = guangzhou
dict[w] = wuhan
- iteritems方法主要是生成遍歷器部逮,用于實現(xiàn)字典的遍歷娜汁,除此之外還有iterkeys()方法和itervalues()方法。
coding:UTF-8
#使用iteritems()方法遍歷字典
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.iteritems()#構(gòu)造遍歷器
for k, v in dict.iteritems():
print 'dict[%s] = ' % k , v
- setdefault方法用于創(chuàng)建新的元素并設(shè)置默認值兄朋。
#coding:UTF-8
#設(shè)置默認值
dict = {}#空的字典
dict.setdefault('b')#{'b': None}
print dict
dict['b'] = 'beijing'
#已經(jīng)設(shè)置了'b'對應(yīng)的值掐禁,再設(shè)置默認將無效
dict.setdefault('b', 'default')
print dict
- pop方法用于刪除指定的key處的值。
#coding:UTF-8
#刪除操作
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#刪除key值為's'處的值
dict.pop('s')
print dict
#coding:UTF-8
#刪除操作還有使用內(nèi)建的方法del()
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#使用del方法
del(dict['s'])
print dict
#coding:UTF-8
#字典的清空使用clear()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#清空
dict.clear()
print dict #空的字典
- get方法用于得到key鍵處的值颅和。
#coding:UTF-8
#get()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.get('s')#shanghai
- keys方法用于返回字典中的key的列表傅事。
#coding:UTF-8
#keys()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.keys()#['s', 'b', 'g', 'w']
- values方法用于返回字典中的value的列表。
#coding:UTF-8
#values()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.values()#['shanghai', 'beijing', 'guangzhou', 'wuhan']
- update函數(shù)主要實現(xiàn)的是將一個字典中的元素增加到另一個字典中峡扩。
#coding:UTF-8
#update()方法
dict_1 = {'b' : 'beijing', 's' : 'shanghai'}
dict_2 = {'w' : 'wuhan', 'g' : 'guangzhou'}
dict_1.update(dict_2)
print dict_1
注意蹭越,若出現(xiàn)dict_2中有dict_1中的鍵,則會更新教届。
- sorted排序函數(shù)响鹃。
#coding:UTF-8
#sorted()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#按照key排序
print sorted(dict.items(), key = lambda d: d[0])
#按照value排序
print sorted(dict.items(), key = lambda d: d[1])
- copy函數(shù)實現(xiàn)的是字典的淺拷貝驾霜。
#coding:UTF-8
#copy()方法
dict_1 = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
dict_2 = {'c' : 'chongqing'}
dict_2 = dict_1.copy()
print dict_2#{'s': 'shanghai', 'b': 'beijing', 'w': 'wuhan', 'g': 'guangzhou'}
注意:清除了dict_2中原有的元素。淺拷貝是指只拷貝數(shù)據(jù)不拷貝數(shù)據(jù)之間的關(guān)系买置,新的數(shù)據(jù)和舊的數(shù)據(jù)使用的是同一塊內(nèi)存空間粪糙;對應(yīng)的是深拷貝,既拷貝數(shù)據(jù)忿项,也拷貝數(shù)據(jù)之間的關(guān)系蓉冈,新的數(shù)據(jù)和舊的數(shù)據(jù)使用的是不同的內(nèi)存空間。在python中可以使用copy模塊來實現(xiàn)對象的深拷貝和淺拷貝倦卖,其中的deepcopy()用于深拷貝操作洒擦,copy()用于淺拷貝操作。
#coding:UTF-8
#copy模塊
import copy
dict_1 = {'a' : 'beijing', 'b' : {'s' : 'shanghai', 'w' : 'wuhan'}}
dict_2 = copy.deepcopy(dict_1)#深拷貝
dict_3 = copy.copy(dict_1)#淺拷貝
dict_2['b']['s'] = 'shenyang'
print dict_1#{'a': 'beijing', 'b': {'s': 'shanghai', 'w': 'wuhan'}}
dict_3['b']['s'] = 'shenyang'
print dict_1#{'a': 'beijing', 'b': {'s': 'shenyang', 'w': 'wuhan'}}