一捂蕴、Python 字典(Dictionary)
字典是另一種可變?nèi)萜髂P托卧幔铱纱鎯?chǔ)任意類型對象竖幔。
字典的每個(gè)鍵值 key=>value 對用冒號(hào) : 分割切黔,每個(gè)鍵值對之間用逗號(hào) , 分割砸脊,整個(gè)字典包括在花括號(hào) {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
- 鍵一般是唯一的,如果重復(fù)最后的一個(gè)鍵值對會(huì)替換前面的纬霞,值不需要唯一凌埂。
>>>dict = {'a': 1, 'b': 2, 'b': '3'};
>>> dict['b']
'3'
>>> dict
{'a': 1, 'b': '3'}
- 值可以取任何數(shù)據(jù)類型,但鍵必須是不可變的诗芜,如字符串瞳抓,數(shù)字或元組。
一個(gè)簡單的字典實(shí)例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
- 也可如此創(chuàng)建字典:
dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };
二伏恐、訪問字典里的值
- 把相應(yīng)的鍵放入熟悉的方括弧孩哑,如下實(shí)例:
-實(shí)例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];
以上實(shí)例輸出結(jié)果:
dict['Name']: Zara
dict['Age']: 7
- 如果用字典里沒有的鍵訪問數(shù)據(jù),會(huì)輸出錯(cuò)誤如下:
-實(shí)例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Alice']: ", dict['Alice'];
以上實(shí)例輸出結(jié)果:
dict['Alice']:
Traceback (most recent call last):
File "test.py", line 5, in <module>
print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'
三翠桦、修改字典
向字典添加新內(nèi)容的方法是增加新的鍵/值對横蜒,修改或刪除已有鍵/值對如下實(shí)例:
實(shí)例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
以上實(shí)例輸出結(jié)果:
dict['Age']: 8
dict['School']: DPS School
四、刪除字典元素
能刪單一的元素也能清空字典,清空只需一項(xiàng)操作丛晌。
顯示刪除一個(gè)字典用del命令鹰霍,如下實(shí)例:
實(shí)例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # 刪除鍵是'Name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
但這會(huì)引發(fā)一個(gè)異常,因?yàn)橛胐el后字典不再存在:
dict['Age']:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable
五茵乱、字典鍵的特性
字典值可以沒有限制地取任何python對象,既可以是標(biāo)準(zhǔn)的對象孟岛,也可以是用戶定義的瓶竭,但鍵不行。
兩個(gè)重要的點(diǎn)需要記浊摺:
- 不允許同一個(gè)鍵出現(xiàn)兩次斤贰。創(chuàng)建時(shí)如果同一個(gè)鍵被賦值兩次,后一個(gè)值會(huì)被記住次询,如下實(shí)例:
實(shí)例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
print "dict['Name']: ", dict['Name'];
以上實(shí)例輸出結(jié)果:
dict['Name']: Manni
- 鍵必須不可變荧恍,所以可以用數(shù)字,字符串或元組充當(dāng)屯吊,所以用列表就不行送巡,如下實(shí)例:
實(shí)例
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7};
print "dict['Name']: ", dict['Name'];
以上實(shí)例輸出結(jié)果:
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable
六、字典內(nèi)置函數(shù)&方法
-
Python字典包含了以下內(nèi)置函數(shù):字典的內(nèi)置函數(shù)
-
Python字典包含了以下內(nèi)置方法:字典內(nèi)置方法
七盒卸、字典中某些函數(shù)的說明
- copy函數(shù):返回一個(gè)具有相同鍵值的新字典
#1.5.2 copy函數(shù):返回一個(gè)具有相同鍵值的新字典
x={'one':1,'two':2,'three':3,'test':['a','b','c']}
print(u'初始x字典:',x)
print(u'X復(fù)制到Y(jié):')
y=x.copy()
print(u'y字典:',y)
y['three']=33 #修改Y中的值
print(u"修改之后的Y:",y)
print(u'修改之后的X:',x)
del y['one']
print(u"刪除之后的Y:",y)
print(u'刪除之后的X:',x)
'''
y['test'].remove('c') #刪除Y中的一個(gè)數(shù)據(jù)
print(u"刪除之后的Y:",y)
print(u'刪除之后的X:',x)
'''
https://blog.csdn.net/u010480899/article/details/52737739
https://www.cnblogs.com/spidermansam/p/7637062.html
八骗爆、字典的其他操作:
info = {
'stu1101':"TengLan Wu",
'stu1102':"LongZe LuoLa",
'stu1103':"XiaoZe MaLiya",
}
b = {
'stu1101':"Alex Li",
1:3,
2:5,
}
print(info.values()) #輸出字典中的值
print(info.keys()) #輸出字典中的key
info.setdefault("stu1101","abc") #如果key存在,不改變?nèi)魏沃当谓椋蝗绻鹝ey不存在摘投,則創(chuàng)建key并賦值
info.update(b) #合并字典,并且更新對應(yīng)的key的值
print(info)
c = dict.fromkeys([6,7,8]) #初始化一個(gè)字典
print(c)
九虹蓄、字典循環(huán)
info = {
'stu1101':"TengLan Wu",
'stu1102':"LongZe LuoLa",
'stu1103':"XiaoZe MaLiya",
}
for i in info: #推薦用此方法
print(i,info[i])
for k,v in info.items(): #不推薦使用犀呼,先要把字典轉(zhuǎn)成列表,如果數(shù)據(jù)量大薇组,效率大大降低
print(k,v)
十外臂、練習(xí)1
- 題目:給你一字典a,如a={1:1,2:2,3:3}体箕,輸出字典a的key专钉,以','鏈接,如‘1,2,3'
print(",".join([str(key) for key in a.keys()]))
或者:
print(",".join(map(str, a.keys())))