99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀python創(chuàng)建和使用字典實例詳解
python創(chuàng)建和使用字典實例詳解
2017-08-24
收藏

python創(chuàng)建和使用字典實例詳解

字典是python中唯一內(nèi)建的映射類型。字典中的值并沒有特殊的順序,但是都存儲在一個特定的鍵(key)里。

鍵可以是數(shù)字,字符串甚至是元組。
1. 創(chuàng)建和使用字典
字典可以通過下面的方式創(chuàng)建:
代碼如下:
phonebook = {'Alice':'2341','Beth':'9102','Ceil':'3258'}
字典由多個鍵及與其對應(yīng)的值構(gòu)成的對組成。每個鍵和它的值之間用冒號(:)隔開,項之間用逗號(,)隔開,而整個字典是由一對大括號括起來??兆值洌簕}

1.1 dict函數(shù)
可以用dict函數(shù)通過映射(比如其他字典)或者(鍵,值)這樣的序列建立字典。
代碼如下:

>>> items = [('name','Gumby'),('age'.42)]
>>> d = dict(items)
>>> d
{'age':42,'name':'Gumby'}
>>> d = dict(name='Gumby','age'=42)
>>> d
{'age':42,'name':'Gumby'}

1.2 基本字典操作
(1)len(d)返回d中項(鍵-值對)的數(shù)量;
(2)d[k]返回關(guān)聯(lián)到k上的值;
(3)d[k]=v將值v關(guān)聯(lián)到鍵k上;
(4)del d[k]刪除鍵為k的項;
(5)k in d檢查d中是否有含鍵為k的項;

1.3 字典的格式化字符串
字典格式化字符串:在每個轉(zhuǎn)換說明符中的%字符后面,可以加上(用圓括號括起來的)鍵,后面再跟上其他說明元素。
只要所有給出的鍵都能在字典中找到,就可以獲得任意數(shù)量的轉(zhuǎn)換說明符。
代碼如下:

>>> temple = ‘the price of cake is $%(cake)s,the price of milk of cake is $%(milk)s. $%(cake)s is OK'
>>> price = {'cake':4,'milk':5}
>>>print temple % price
‘the price of cake is $4,the price of milk of cake is $5. $4 is OK'

1.4 字典方法
1.4.1 clear
clear方法清除字典中所有的項,這是個原地操作,無返回值(或者說返回none)。
考慮下面2種情況:
a.將x關(guān)聯(lián)到一個新的空字典來清空它,這對y一點影響都沒有,y還是關(guān)聯(lián)到原先的字典
代碼如下:

>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key':'value'}
>>> x = {}
>>> y
{'key':'value'}

b.如果想清空原始字典中所有的元素,必須用clear方法。
代碼如下:

>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key':'value'}
>>> x.clear()
>>> y
{}

1.4.2 copy
copy方法返回一個具有相同鍵-值對的新字典(這個方法實現(xiàn)的是淺復(fù)制,因為值本身是相同的,而不是副本)
在副本中替換值時,原始字典不受影響,但是如果修改了某個值,原始字典會改變。]
代碼如下:

>>> x = {'a':1,'b':[2,3,4]}
>>> y = x.copy()
>>> y['a'] = 5
>>> y['b'].remove(3)
>>> y
 {'a':5,'b':[2,4]}
>>> x
 {'a':1,'b':[2,4]}

避免這個問題的方法是使用深度復(fù)制-deepcopy(),復(fù)制其包含所有的值。
代碼如下:

>>> x = {'a':1,'b':[2,3,4]}
>>> y = x.copy()
>>> z = x.deepcopy()
>>> x['a'].append(5)
>>> y
 {'a':1,5,'b':[2,3.4]}
>>> z
 {'a':1,'b':[2,3,4]}

1.4.3 fromkeys
fromkeys方法使用給定的鍵建立新的字典,每個鍵默認對應(yīng)的值為None,可以直接在所有字典的類型dict上調(diào)用此方法。如果不想使用默認值,也可以自己提供值。
代碼如下:

>>> {}.fromkeys(['name','age'])
{'age':None,'name':None}
>>>
>>> dict.fromkeys(['name','age'],'unknow')
{'age':'unknow','name':'unknow'}

1.4.4 get
get方法是個更寬松的訪問字典項的方法。當使用get訪問一個不存在的鍵時,會得到None值。還可以自定義“默認”值,替換None。
代碼如下:

>>> d = {}
>>> print d.get('name')
None
>>> d.get("name",'N/A')
'N/A'
>>> d[''name] = 'Eric'
>>> d.get('name')
'Eric'

1.4.5 has_key
has_key方法可以檢查字典中是否含有給出的鍵。d.has_key(k)
代碼如下:

>>> d = {}
>>> d.has_key('name')
False

1.4.6 items和iteritems
items方法將所有的字典項以列表方式返回,但是列表中的每一項(鍵,值)返回時并沒有特殊的順序。iteritems方法的作用大致相同,但是會返回一個迭代器對象而不是列表:
代碼如下:

>>> d = {'a':1,'b':2,'c':3}
>>>d.items
[('a',1),('b',2),('c',3)]
>>> it = d.iteritems()
>>> it

>>> list(it)
[('a',1),('b',2),('c',3)]

1.4.7 keys和iterkeys
keys方法將字典中的鍵以列表形式返回,而iterkeys則返回針對鍵的迭代器。

1.4.8 pop方法
pop方法用來獲得對應(yīng)給定鍵的值,然后將這個鍵-值對從字典中移除。
代碼如下:

>>> d = {'a':1,'b':2,'c':3}
>>> d.pop('a')
>>> d
{'b':2,'c':3}

1.4.10 setdefault
setdefault方法在某種程度上類似于get方法,就是能夠獲得與給定鍵相關(guān)聯(lián)的值,還能在字典中不含有給定鍵的情況下設(shè)定相應(yīng)的鍵值。
代碼如下:

>>> d = {}
>>> d.setdefault('name','N/A')
'N/A'
>>> d
{'name': 'N/A'}
>>> d.setdefault('name',A)
'N/A'

如上例,當鍵存在時,返回默認值(可選)并且相應(yīng)地更新字典,如果鍵存在,那么返回與其對應(yīng)的值,但不改變字典。

1.4.11 update
update方法可以利用一個字典項更新另一個字典。提供的字典項會被添加到舊的字典中,若有相同的鍵則會進行覆蓋。
代碼如下:

>>> d = {'a':1,'b':2,'c':3}
>>> x = {'a':5,'d':6}
>>> d.update(x)
>>> d
{'a': 5, 'c': 3, 'b': 2, 'd': 6}

1.4.12 values和itervalues
values方法以列表的形式返回字典中的值(itervalues返回值的迭代器),與返回鍵的列表不同的是,返回值列表中可以包含重復(fù)的元素。
代碼如下:

>>> d = {}
>>> d[1]=1
>>> d[2]=2
>>> d[3]=3
>>> d[4]=1
>>> d
{1: 1, 2: 2, 3: 3, 4: 1}
>>> d.values()
[1, 2, 3, 1]

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }