Python入門實踐12 ——字典(Dictionary)
一、目標(biāo)
1、掌握字典的特征,key唯一,不可變。
2、掌握字典的常用操作。
二、要點
1、字典
字典是另一種可變?nèi)萜髂P停且粋€無序、以鍵值對存儲的數(shù)據(jù)類型,數(shù)據(jù)關(guān)聯(lián)性強(qiáng)、唯一一個映射數(shù)據(jù)類型。
鍵:必須是可哈希(不可變的數(shù)據(jù)類型:字符串、數(shù)字、元組、bool)值,并且是唯一的。
2、定義
字典的每個鍵值(key=>value)對用冒號( : )分割,每個對之間用逗號( , )分割,整個字典包括在花括號( {}) 中。
格式如下:
d = {key1 : value1, key2 : value2 }
-
鍵必須是唯一的。不允許同一個鍵出現(xiàn)兩次。創(chuàng)建時如果同一個鍵被賦值兩次,后一個值會被記住。
-
鍵必須不可變,所以可以用數(shù)字,字符串或元組充當(dāng),而用列表就不行,
-
值可以取任何數(shù)據(jù)類型,但鍵必須是不可變的,如字符串,數(shù)字或元組。
1)、{}直接創(chuàng)建字典
scores = {'語文': 89, '數(shù)學(xué)': 92, '英語': 93};
2)、使用關(guān)鍵字參數(shù)來創(chuàng)建字典
dict6 = dict(spinach = 1.39, cabbage = 2.59)
print(dict6);
3、字典里的值
把相應(yīng)的鍵放入到方括號中。
如d[“key1”]
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];
4、字典的操作
1)、增加
(1)dict[key] = value;
添加 key-value 對,如果該鍵已存在,則會覆蓋之前的值 ,不存在的 key ,添加到字典序列后。
(2) setdefault(key,value)
字典調(diào)用該函數(shù),參數(shù)“key”為必填,“value”如果不填寫默認(rèn)為None,這個函數(shù)的作用可以避免覆蓋已存在的鍵。
如果字典中包含有給定鍵,則返回該鍵對應(yīng)的值,否則返回為該鍵設(shè)置的值。
print(scores.setdefault("化學(xué)",100));
(3)、dict.update(dict2)
dict2 -- 添加到指定字典dict里的字典。
2)、刪除
(1)、del dict[key] 刪除鍵對應(yīng)的條目
del dict['Name'] # 刪除鍵是'Name'的條目
del dict # 刪除字典
(2)、dict.clear() 清空字典所有條目
dict.clear() # 清空字典所有條目
(3)、dict.pop("key")
(4)、dict.popitem()隨機(jī)刪除
3)、修改
dict[key] = value;
4)、查找
(1)、get(key)
返回對應(yīng)key的值
(2)、dic[key]
對應(yīng)key的值
(3)、in
判斷字典里面存不存在這個key。
print('key' in dic ) # 有的話返回TRUE
(4)、dic.values()
查詢所有的values。
print(dic.values)
(5)、dic.keys()
查詢所有的key。
print(idic.keys())
5、內(nèi)置函數(shù)
序號 | 函數(shù) | 描述 |
---|---|---|
1 | cmp(dict1, dict2) | 比較兩個字典元素。 |
2 | len(dict) | 計算字典元素個數(shù),即鍵的總數(shù)。 |
3 | str(dict) | 輸出字典可打印的字符串表示。 |
4 | type(variable) | 返回輸入的變量類型,如果變量是字典就返回字典類型。 |
6、內(nèi)置方法
序號 | 函數(shù) | 描述 |
---|---|---|
1 | dict.clear() | 刪除字典內(nèi)所有元素 |
2 | dict.copy() | 返回一個字典的淺復(fù)制 |
3 | dict.fromkeys(seq[, val]) | 創(chuàng)建一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應(yīng)的初始值 |
4 | dict.get(key, default=None) | 返回指定鍵的值,如果值不在字典中返回default值 |
5 | dict.has_key(key) | 如果鍵在字典dict里返回true,否則返回false |
6 | dict.items() | 以列表返回可遍歷的(鍵, 值) 元組數(shù)組 |
7 | dict.keys() | 以列表返回一個字典所有的鍵 |
8 | dict.setdefault(key, default=None) | 和get()類似, 但如果鍵不存在于字典中,將會添加鍵并將值設(shè)為default |
9 | dict.update(dict2) | 把字典dict2的鍵/值對更新到dict里 |
10 | dict.values() | 以列表返回字典中的所有值 |
11 | pop(key[,default]) | 刪除字典給定鍵 key 所對應(yīng)的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。 |
12 | popitem() | 隨機(jī)返回并刪除字典中的一對鍵和值。 |
三、步驟
1、新建新建ex12.py文件。
2、錄入實例中代碼。
3、運行。
四、實例(Python 3.0+)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'jungle'
__mtime__ = '2019-08-28'
"""
scores = {'語文': 89, '數(shù)學(xué)': 92, '英語': 93};
print(scores);# 空的花括號代表空的dict
empty_dict = {};
print(empty_dict);
# 使用元組作為dict的key
dict2 = {(20,30):'good', 30:'bad'};
print(dict2,dict2[20,30]);
# 使用關(guān)鍵字參數(shù)來創(chuàng)建字典
dict6 = dict(spinach = 1.39, cabbage = 2.59)
print(dict6) # {'spinach': 1.39, 'cabbage': 2.59}
#調(diào)用字典的值
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print( "dict['Name']: ", dict['Name']);
print( "dict['Age']: ", dict['Age']);
# 對不存在的key賦值,就是增加key-value對
scores['物理'] = 99;
print(scores.setdefault("化學(xué)",100));
print(scores) ;
# update把另一字典添加到一個字典
dict = {'Name': 'Zara', 'Age': 7}
dict2 = {'Sex': 'female' }
dict.update(dict2)
print("Value : %s" % dict);
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print(dict);
# 刪除鍵是'Name'的條目
del dict['Name']
print(dict);
dict.clear() # 清空字典所有條目
del dict # 刪除字典
####字典的定義 key: value
info ={
'stu1001':"TengLan Wu",
'Stu1002':"Longze Loula",
'stu1103':"XiaoZe Maliya",
}
#####查詢 字典的數(shù)據(jù)###############
#####查詢所有,但是字典是無序的
print(info);
#如果查詢一個只需要查詢對方的key
print(info["stu1001"]);
#不報錯方式查詢(安全點)
print(info.get("stu1001"));
#判斷字典里面存不存在這個key
print('stu1005' in info ); # 有的話返回TRUE
#查詢所有的values
print(info.values());
#查詢所有的key
print(info.keys());
print(dir(dict));
五、運行輸出:
{'語文': 89, '數(shù)學(xué)': 92, '英語': 93}
{}
{(20, 30): 'good', 30: 'bad'} good
{'spinach': 1.39, 'cabbage': 2.59}
dict['Name']: Zara
dict['Age']: 7
100
{'語文': 89, '數(shù)學(xué)': 92, '英語': 93, '物理': 99, '化學(xué)': 100}
Value : {'Name': 'Zara', 'Age': 7, 'Sex': 'female'}
{'Name': 'Zara', 'Age': 7, 'Class': 'First'}
{'Age': 7, 'Class': 'First'}
{'stu1001': 'TengLan Wu', 'Stu1002': 'Longze Loula', 'stu1103': 'XiaoZe Maliya'}
TengLan Wu
TengLan Wu
False
dict_values(['TengLan Wu', 'Longze Loula', 'XiaoZe Maliya'])
dict_keys(['stu1001', 'Stu1002', 'stu1103'])
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
注:
1、撰寫內(nèi)容來源于個人收集的文獻(xiàn),屬學(xué)術(shù)探究范疇。
2、版權(quán)屬于時進(jìn)軍個人,轉(zhuǎn)載需注明。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
