一、字典的概念 字典跟列表很像,特別是表達方式通過花括弧代替方括弧。當然,字典的元素通過左邊部分為鍵右邊部分為值通過冒號來分割。 二、字典的創建 {'jack': 4098, 'sape': 4139, 'yellow': 8466}{'jack': 4098, 'sape': 4139, 'yel ...
一、字典的概念
字典跟列表很像,特別是表達方式通過花括弧代替方括弧。當然,字典的元素通過左邊部分為鍵右邊部分為值通過冒號來分割。
二、字典的創建
dict1 = {'jack': 4098, 'sape': 4139,'yellow':8466} #直接創建
dict2 = dict([('jack',4098),('sape',4139),('yellow',8466)]) #根據元組創建
dict3 = dict(jack=4098,sape=4139,yellow=8466) #通過鍵值創建
dict4 = {i:chr(65+i) for i in range(4)} #鍵,值可以通過迴圈
dict5 = {(k,v):k+v for k in range(2) for v in range(3)} #元組也能作為鍵
print(dict1)
print(dict2)
print(dict3)
print(dict4)
print(dict5)
輸出:
{'jack': 4098, 'sape': 4139, 'yellow': 8466}
{'jack': 4098, 'sape': 4139, 'yellow': 8466}
{'jack': 4098, 'sape': 4139, 'yellow': 8466}
{0: 'A', 1: 'B', 2: 'C', 3: 'D'}
{(0, 0): 0, (0, 1): 1, (0, 2): 2, (1, 0): 1, (1, 1): 2, (1, 2): 3}
三、字典的添加修改刪除
dict1 = {'jack': 4098, 'sape': 4139,'yellow':8466}
dict1['jack'] = 4299 #修改元素
dict1['rose'] = 4300 #添加元素
print(dict1)
輸出:
{'jack': 4299, 'sape': 4139, 'yellow': 8466, 'rose': 4300}
del dict1['rose'] #刪除字典元素
dict1.clear() #清空字典
del dict #刪除字典
四、字典的方法
1、dict.clear() #清空字典
2、dict.copy() #返回字典的淺複製
賦值、淺複製與深複製
賦值:引用對象
淺複製:引用對象的父對象
深複製:引用對象的父對象及子對象,此處不做解釋
例:
dict1 = {'jack': [4098,4100], 'sape': 4139,'yellow':8466}
dic1 = dict1 #引用對象
dic2 = dict1.copy() #淺拷貝
dict1['jack'] = [4399,3300]
dict1['red'] = 3200
print(dic1)
print(dic2)
{'jack': [4399, 3300], 'sape': 4139, 'yellow': 8466, 'red': 3200}
{'jack': [4098, 4100], 'sape': 4139, 'yellow': 8466}
3、dict.fromkeys(seq[,value]) #創建一個新字典,以序列中的值作為鍵,以定義的值作為值
例:
seq = ('name','age','sex')
dict1 = dict.fromkeys(seq,10)
print(dict1)
輸出:
{'name': 2, 'age': 2, 'sex': 2}
4、dict.get(key,default=none) #獲取制定鍵的值如果不存在則返回預設值
5、key in dict #是否存在鍵,返回true or false
6、dict.items() #以列表方法返回鍵值的元組數組
7、dict.keys() #返回以列表形式的所有的鍵
8、dict.setdefault(key, default=None) #返回指定鍵的值,若不存在插入預設值,並返回預設值
9、dict.update(dict2) #把指定字典的值更新到字典里
10、dict.values() #與get方法類似,返回列表形式的所有的值
11、dict.pop(key[,default]) #字典 pop() 方法刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。
12、dict.popitem() #從字典末尾開始刪除鍵值對,如果字典空則拋錯
五、練習
# 1、編寫登錄介面
# 輸入用戶名密碼
# 認證成功後顯示歡迎信息
# 輸錯3次後鎖定
f = open('lockuser.log', 'r')
strg = f.read()
print(strg)
userdict = {'yellow':123,'red':456,'bill':234}
username = input('username:')
failcount = 0
if username in strg:
failcount=3
f.close()
while failcount < 3:
passwd = str(input('passwd:'))
if username in userdict and passwd == str(userdict[username]):
print('welcome!')
break
elif username not in userdict:
print('invalid username!')
username = input('username:')
else:
print('wrong passwd!')
failcount+=1
continue
else:
print('too many failed,%s is locked!'%(username))
f = open('lockuser.log','a')
f.write(username+'\n')
f.close()
# 2、編寫多級菜單
# 三級菜單
# 可依次選擇進入子菜單
while True:
workarea = {'浙江省':{'杭州市':['濱江區','西湖區'],'溫州市':['永安區','蒼南區']},
'廣東省':{'汕頭市':['澄海區','潮陽區'],'潮州市':['詔安縣','平和縣']},
'山東省':{'青島市':['臺南區','臺北區'],'濰坊市':['煙臺區','扯淡區']}}
sheng = list(workarea.keys())
print('1:'+sheng[0]+'\n'+'2:'+sheng[1]+'\n'+'3:'+sheng[2]+'\n')
display = int(input('enter your choose:'))
while True:
if display>len(sheng):
print('中國沒有這個省,好好學學語文吧!')
break
else:
shi = list(workarea[sheng[display-1]].keys())
print('1:' + shi[0] + '\n' + '2:' + shi[1] + '\n'+'3、b')
display2 = int(input('enter your choose:'))
if display2 == 3:
break
elif display2 > len(shi):
print(sheng[display-1]+'沒有這個市,好好學學語文吧!')
break
else:
qu = workarea[sheng[display-1]][shi[display2-1]]
print('1:' + qu[0] + '\n' + '2:' + qu[1] + '\n'+'3、b')
display3 = int(input('enter your choose:'))
while True:
if display3 == 3:
break