Python元組與字典

2018-06-08 17:14 更新


python字典

概念:字典是另一種可變?nèi)萜黝愋停铱纱鎯?chǔ)任意類型對(duì)象,如其他容器類型。

字典由鍵和對(duì)應(yīng)值成對(duì)組成。字典也被稱作關(guān)聯(lián)數(shù)組或哈希表。理解好一一對(duì)應(yīng)的

關(guān)系很重要

 

1. 掌握字典類型

a) 字典的特點(diǎn)

無序: 通過鍵實(shí)現(xiàn)元素存取,故無序

可變:可以通過鍵進(jìn)行改變值

異構(gòu):支持多種數(shù)據(jù)類型

嵌套:可以在鍵值對(duì)中的值部分出現(xiàn)字典

b) 定義字典:

ii. 方法一:{key1:value1,key2:value2,...}

iii. 方法二:dict()內(nèi)置函數(shù):指定鍵值

例:d2=dict(name="jerry",age="45",gender="m")

iv. 關(guān)鍵點(diǎn):

鍵與值用冒號(hào)“:”分開;

項(xiàng)與項(xiàng)用逗號(hào)“,”分開;

字典中的鍵必須是唯一的,而值可以不唯一

   實(shí)例:

   

dict = {'Alice': '16', ' MadKing ': '17', 'Cecil': '18'}
dict1 = { 'abc': 456 }dict2 = { 'abc': 123, 98.6: 37 } 嵌套定義


訪問字典里的值

把相應(yīng)的鍵放入熟悉的方括弧,如下實(shí)例:


 

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
  
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];


如果用字典里沒有的鍵訪問數(shù)據(jù),會(huì)輸出錯(cuò)誤如下:


dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
  
print "dict['Alice']: ", dict['Alice'];


以上實(shí)例輸出結(jié)果:

1

2

3

4

5

dict['Zara']:
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'




修改字典

向字典添加新內(nèi)容的方法是增加新的鍵/值對(duì),修改或刪除已有鍵/值對(duì)如下實(shí)例:

1

2

3

4

5

6

7

8

9

10

#coding:utf8
  
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é)果:

1

2

dict['Age']:  8
dict['School']:  DPS School


刪除字典元素

能刪單一的元素也能清空字典,清空只需一項(xiàng)操作。

顯示刪除一個(gè)字典用del命令,如下實(shí)例:


#coding:utf8
  
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后字典不再存在:

1

2

3

4

5

dict['Age']:
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable


注意:刪除元素盡量用字典內(nèi)置方法,不需要直接del,后面會(huì)討論。

 

字典鍵的特性

字典值可以沒有限制地取任何python對(duì)象,既可以是標(biāo)準(zhǔn)的對(duì)象,也可以是用戶定義的,但鍵不行。

兩個(gè)重要的點(diǎn)需要記住:

1)不允許同一個(gè)鍵出現(xiàn)兩次。創(chuàng)建時(shí)如果同一個(gè)鍵被賦值兩次,后一個(gè)值會(huì)被記住,如下實(shí)例:

1

2

3

4

5

#coding:utf8
  
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
  
print "dict['Name']: ", dict['Name'];


以上實(shí)例輸出結(jié)果:

1

dict['Name']:  Manni


2)鍵必須不可變,所以可以用數(shù),字符串或元組充當(dāng),所以用列表就不行,如下實(shí)例:

1

2

3

4

5

#coding:utf8
  
dict = {['Name']: 'Zara', 'Age': 7};
  
print "dict['Name']: ", dict['Name'];


以上實(shí)例輸出結(jié)果:

1

2

3

4

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable


掌握字典相關(guān)方法

1.1 添加元素:dict1[key] = value

例如:

1.2 items():變量解包:即將字典轉(zhuǎn)化為鍵、值作為元組的列表

例如:

 


dict = {'Name': 'Zara', 'Age': 7}
 
print "Value : %s" %  dict.items()
 
Value : [('Age', 7), ('Name', 'Zara')]

    

            1.3 keys();鍵列表

例如:

 

1.4 values():值列表

例如:

 


1.5 has_key():判斷是否存在某個(gè)鍵,返回結(jié)果true 或false

例如:

 


 

1.6 len():取得字典中鍵值對(duì)個(gè)數(shù)

例如:

 

1.7         update():在原字典上合并字典,鍵相同時(shí)會(huì)被覆蓋。

        例如:

        


1.8         get():取得某個(gè)鍵對(duì)應(yīng)的值

例如:

1.9         pop():彈出指定鍵對(duì)應(yīng)的值

1.10         popitem():隨機(jī)彈出鍵值對(duì)

1.11         clear():清除所有元素

例如:

2. 掌握字典的遍歷:

 

概念:Python的元組與列表類似,也是一種容器類型,不同之處在于元組的元素不能修改。
元組使用小括號(hào),列表使用方括號(hào)。

Python的元組與列表類似,不同之處在于元組的元素不能修改。

特點(diǎn):支持異構(gòu);

  支持嵌套;

  不可變

元組使用小括號(hào),列表使用方括號(hào)。

元組創(chuàng)建很簡單,只需要在括號(hào)中添加元素,并使用逗號(hào)隔開即可。

如下實(shí)例:

1

2

3

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";


創(chuàng)建空元組


tup1 =();


元組中只包含一個(gè)元素時(shí),需要在元素后面添加逗號(hào)


tup1 =(50,);


元組與字符串類似,下標(biāo)索引從0開始,可以進(jìn)行截取,組合等。



訪問元組

元組可以使用下標(biāo)索引來訪問元組中的值,如下實(shí)例:


 
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5, 6, 7 );
 
print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]


以上實(shí)例輸出結(jié)果:


tup1[0]:  physics
tup2[1:5]:  [2, 3, 4, 5]




修改元組

元組中的元素值是不允許修改的,但我們可以對(duì)元組進(jìn)行連接組合,如下實(shí)例:


 

tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');
 
# 以下修改元組元素操作是非法的。
# tup1[0] = 100;
 
# 創(chuàng)建一個(gè)新的元組
tup3 = tup1 + tup2;
print tup3;


以上實(shí)例輸出結(jié)果:


(12, 34.56, 'abc', 'xyz')


刪除元組

元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個(gè)元組,如下實(shí)例:


 

 
tup = ('physics', 'chemistry', 1997, 2000);
 
print tup;
del tup;
print "After deleting tup : "
print tup;


以上實(shí)例元組被刪除后,輸出變量會(huì)有異常信息,輸出如下所示:

1

2

3

4

5

6

('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):
  File "test.py", line 9, in <module>
    print tup;
NameError: name 'tup' is not defined




元組運(yùn)算符

與字符串一樣,元組之間可以使用 + 號(hào)和 * 號(hào)進(jìn)行運(yùn)算。這就意味著他們可以組合和復(fù)制,運(yùn)算后會(huì)生成一個(gè)新的元組。

Python 表達(dá)式

結(jié)果

描述

len((1, 2, 3))

3

計(jì)算元素個(gè)數(shù)

(1, 2, 3) + (4, 5, 6)

(1, 2, 3, 4, 5, 6)

連接

['Hi!'] * 4

('Hi!', 'Hi!', 'Hi!', 'Hi!')

復(fù)制

3 in (1, 2, 3)

True

元素是否存在

for x in (1, 2, 3): print x,

1 2 3

迭代




元組索引,截取

因?yàn)樵M也是一個(gè)序列,所以我們可以訪問元組中的指定位置的元素,也可以截取索引中的一段元素,如下所示:

元組:


L =('spam', 'Spam', 'SPAM!')


Python 表達(dá)式

結(jié)果

描述

L[2]

'SPAM!'

讀取第三個(gè)元素

L[-2]

'Spam'

反向讀??;讀取倒數(shù)第二個(gè)元素

L[1:]

['Spam', 'SPAM!']

截取元素




無關(guān)閉分隔符

任意對(duì)象 以逗號(hào)隔開,默認(rèn)為元組,如下實(shí)例:


print 'abc', -4.24e93, 18+6.6j, 'xyz';
x, y = 1, 2;
print "Value of x , y : ", x,y;


元組內(nèi)置函數(shù)

Python元組包含了以下內(nèi)置函數(shù)

 

序號(hào)

方法及描

1

len(t)  計(jì)算元組元素個(gè)數(shù)。

   


2

max(t) 返回元組中元素最大值。

   


3

min(t) 返回元組中元素最小值。

   


4

tuple(li) 將列表轉(zhuǎn)換為元組

   


5

index():返回指定元素第一次出現(xiàn)的索引位置

count():指定元素出現(xiàn)的次數(shù)

例如:

  

 

 


本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)