天天看點

python 字典值轉義_【Python連載】那些必須掌握的Python資料類型

經過近幾年的發展,Python已成為了資料科學和機器學習的首選語言,許多人也是以開始走上自學python之路。從今天開始,本公衆号将陸續分享Python的基礎操作,希望能夠給予開始入門python的小白一點幫助。話不多說,那麼今天先給大家分享一下python中的常用類型及其應用。

python 字典值轉義_【Python連載】那些必須掌握的Python資料類型

1.字元串

字元串是 Python 中最常用的資料類型。

1.1 建立字元串

我們可以使用引号 ' 或 " 來建立字元串。

s1 = 'haha1'

s2 = "haha2"

print(s1) # haha1

print(s2) # haha2

1.2 字元串截取與拼接

通過方括号的形式來截取字元串

s1 = 'Hello World!'

s2 = "abcd dcba"

print ("s1[0]: ", s1[0]) # 結果為: s1[0]: H

print ("s2[0:5]: ", s2[0:5]) # 結果為: s2[0:5]: abcd

除此之外,還可以将截取字元串的一部分與其他字段拼接

s1 = 'Hello World!'

s2 = s1[0:6] + 'ABC'

print(s2) # Hello ABC

1.3 轉義字元

在需要在字元中使用特殊字元時,python用反斜杠'\'轉義字元

# 常用的轉義字元有:\n表示換行;\t表示橫向制表符;\\表示反斜杆符号

s1 = 'abc\ndef'

print(s1)

# abc

# def

s2 = 'abc\tdef'

print(s2)

# abc def

s3 = 'abc\\def'

print(s3)

# abc\def

1.4 字元串運算符

具體字元串運算符如下表所示

python 字典值轉義_【Python連載】那些必須掌握的Python資料類型

下面舉栗說明

s1 = 'I am a'

s2 = ' handsome boy!'

s3 = s1 + s2

print(s3) # I am a handsome boy!

print(s3*2) # I am a handsome boy!I am a handsome boy!

print(s3[2]) # a

print(s3[16:19]) # boy

print('c' in s3) # False

print('c' not in s3) # True

print('%s abc'%11) #11 abc

1.5 字元串的常用内置函數

在python中,可以通過字元串的内置函數來快速實作某些功能。

python 字典值轉義_【Python連載】那些必須掌握的Python資料類型

具體操作如下

s = 'abc 123 abc 456'

print(s.count('abc')) #2

print(s.upper()) #ABC 123 ABC 456

print(len(s)) #15

print(s.replace('abc','ok')) #ok 123 ok 456

s2 = ' AA11 '

print(s2.lower()) # aa11

print(s2.strip()) # AA11

2.元組

元組是一個固定長度且不可改變的Python序列對象。

2.1 建立元組

可以通過以下方式來建立元組

tu=(1)

tu2=(1,)

tu3=(1,2,3,4)

tu4=1,2,3,4

type(tu4)

# 輸出結果為:tuple

用tuple可以将任意序列或疊代器轉換成元組

tup = tuple('string')

tup

# 輸出結果為:('s', 't', 'r', 'i', 'n', 'g')

2.2 通路元組元素

元組可以使用下标索引來通路元組中的值

t1 = ('abc','123','456',111)

print(t1[0]) # abc

print(t1[1:3]) # ('123', '456')

2.3 修改元組

元組是不可變的對象,但如果元組中的某個對象是可變的,比如清單,則可以對這個對象進行修改

tup = tuple(['foo', [1, 2], True])

tup[1].append(3)

tup

# 輸出結果為:('foo', [1, 2, 3], True)

還可以使用加法和乘法串聯

tup1 = (4, None, 'foo') + (6, 0) + ('bar',)

tup2 = ('foo', 'bar') * 5

tup1,tup2

# 輸出結果為:

((4, None, 'foo', 6, 0, 'bar'),

('foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'bar'))

2.4 元組拆分與替換

如果你想将元組指派給類似元組的變量,Python會試圖拆分等号右邊的值

tup = (4, 5, 6)

a, b, c = tup

a,b,c

# 輸出結果為:(4, 5, 6)

可以進行簡單的元組替換

a,b = 1,2

b,a = a,b

a,b

# 輸出結果為:(2, 1)

目前Python還支援更進階的元組拆分功能,允許從元組的開頭“摘取”幾個元素。

#它使用了特殊的文法*rest,這也用在函數簽名中以抓取任意長度清單的位置參數

values = 1, 2, 3, 4, 5

a,b,*rest = values

a,b,rest

#rest的部分是想要舍棄的部分,rest的名字不重要。作為慣用寫法,許多Python程式員會将不需要的變量使用下劃線,即*_

# 輸出結果為:(1, 2, [3, 4, 5])

2.5 元組的内置函數

可以使用count來統計某個值的出現頻率

a = (1, 2, 2, 2, 3, 4, 2)

a.count(2)

# 輸出結果為:4

元組還可以通過len()來檢視元素個數

print(len(a)) # 7

3.清單

與元組對比,清單屬于可變的資料類型,它的長度和内容都可變。是以清單可以執行添加、删除。

3.1 建立清單

我們可以通過以下方式來建立清單,清單裡的元素可以是不同資料類型的

li = [1,2,3,4]

li2 = ['a','b','c','d']

li3 = [1,2,'a','b']

3.2 添加元素

可以通過append方法在清單末尾添加元素

a_list = [2, 3, 7, None]

a_list.append('dwarf')#append在清單末尾添加元素

a_list

# 輸出結果為:[2, 3, 7, None, 'dwarf']

使用extend方法可以追加多個元素

x = [4, None, 'foo']

x.extend([7, 8, (2, 3)])

x

# 輸出結果為:[4, None, 'foo', 7, 8, (2, 3)]

3.3 插入元素

通過insert方法向清單的特定位置插入元素

x.insert(2,'abc')

x # [4, None, 'abc', 'foo', 7, 8, (2, 3)]

3.4 删除元素

使用pop移除并傳回指定位置的元素

x.pop(2)

# 輸出結果為:'abc'

我們還可以通過remove來删除清單元素

x.append('foo')#在末尾加上'red'。這樣就有兩個'foo'值

# 此時的x為:[4, None, 'foo', 7, 8, (2, 3), 'foo']

x.remove('foo')#remove會先尋找第一個值并除去

x

# 輸出結果為:[4, None, 7, 8, (2, 3), 'foo']

3.5 切片、拼接、周遊

切片可以選取大多數序列類型的一部分,切片的基本形式是在方括号中使用。切片的起始元素是包括的,不包含結束元素。

seq = [7, 2, 3, 7, 5, 6, 0, 1]

seq[1:5],seq[:5] # start或stop都可以被省略,省略之後,分别預設序列的開頭和結尾

# 輸出結果為:([2, 3, 7, 5], [7, 2, 3, 7, 5])

a = [1,2,3]

a = a + [6,8,7] # 進行拼接操作

print(a) # [1, 2, 3, 6, 8, 7]

我們可以通過以下方式來周遊清單元素

#周遊

lists = ["m1", 1900, "m2", 2000]

#1.使用iter()

for val in iter(lists):

print(val)

#2.enumerate周遊方法

for i, val in enumerate(lists):

print(i, val)

#3.索引周遊

for index in range(len(lists)):

print(lists[index])

4.字典

字典是另一種可變容器模型,且可存儲任意類型對象。字典使用花括号{}包括,鍵和值之間用冒号':'分割,每對鍵-值用逗号','分割。鍵必須唯一,即一個鍵不能對應多個值,不過多個鍵可以指向一個值。

4.1 建立字典

可以通過以下方法建立字典

empty_dict = {} # 建立一個空字典

d1 = {'a' : 'some value', 'b' : [1, 2, 3, 4]}

d1

4.2 通路字典元素

把相應的鍵放入到方括号中即可通路字典元素

print(d1['a']) # 'some value'

但是要注意,如果用字典裡沒有的鍵通路資料時,會輸出錯誤。是以我們可以使用get方法來擷取字典元素,當通路不存在的鍵時,不會出現報錯。

print(d1.get('a')) # some value

print(d1.get('h','該鍵不存在')) # 該鍵不存在

4.3 修改字典

添加字典元素,或者修改原字典鍵對應的值的方法如下

d1['c'] = [6,8,9] # 添加元素

d1['a'] = 'haha' # 更新a

d1

# 結果:{'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9]}

同樣,我們也可以使用update方法來實作字典元素的添加和修改

d1.update({'b' : 'foo', 'c' : 12, 'd':'yes'}) # 原d1:{'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9]}

d1 # {'a': 'haha', 'b': 'foo', 'c': 12, 'd': 'yes'}

4.4 删除字典元素

可以使用pop或del關鍵字來删除值

d1[5] = 'some value'

print(d1) # {'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9], 5: 'some value'}

d1['dummy'] = 'another value'

print(d1) # {'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9], 5: 'some value', 'dummy': 'another value'}

del d1[5]

print(d1) # {'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9], 'dummy': 'another value'}

ret = d1.pop('dummy') # pop可以傳回要删除的字典元素的值

ret,d1 # ('another value', {'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9]})

4.5 字典内置函數

通過len()擷取字典元素個數,即鍵的總數

d = {'a':123,'b':[4,5,6]}

print(len(d)) # 2

通過str()可以以字元串形式輸出字典

print(str(d)) # "{'a': 123, 'b': [4, 5, 6]}"

擷取字典的鍵和值

list(d1.keys()),list(d1.values())

# 結果:(['a', 'b', 'c'], ['haha', [1, 2, 3, 4], [6, 8, 9]])

4.6 字典其餘常用操作

字典周遊方法如下

#1.周遊key值 在使用上,for key in a和 for key in a.keys():完全等價。

a={'a': '1', 'b': '2', 'c': '3'}

print("周遊key值:")

for key in a:

print(key+':'+a[key])

#2.周遊value值

print("周遊value值:")

for value in a.values():

print(value)

#3.周遊字典項

print("周遊字典項:")

for kv in a.items():

print(kv)

#4.周遊字典鍵值

print("周遊字典健值:")

for key,value in a.items():

print(key+':'+value)

字典總是明确地記錄鍵和值之間的關聯關系,但擷取字典的元素時,擷取順序是不可預測的。如果要以特定的順序傳回元素,一種辦法是在for 循環中對傳回的鍵進行排序。

favorite_languages = {

'jen': 'python',

'sarah': 'c',

'edward': 'ruby',

'phil': 'python',

}

for name in sorted(favorite_languages.keys()):

print(name.title() + ", thank you for taking the poll.")

# 輸出結果如下:

Edward, thank you for taking the poll.

Jen, thank you for taking the poll.

Phil, thank you for taking the poll.

Sarah, thank you for taking the poll.

根據key找value

d = {'a' : [1, 2, 3], 'b' : [4, 5],'c':[1,2,3,4] }

key = ['a','c']

value=[]

for k in key:

value.append(d[k])

value # [[1, 2, 3], [1, 2, 3, 4]]

根據value找key

#根據value找key

d = { 'a' : [1, 2, 3], 'b' : [4, 5],'c':[1,2,3] }

value = [1,2,3]

t=[k for k,v in d.items() if v == value]

print(t) # ['a', 'c']

5.集合

集合是無序的不可重複的元素的集合。

5.1 建立集合

可以通過以下方法來建立集合

# 兩種方式建立集合:

# 通過set函數

s1 = set([2, 2, 2, 1, 3, 3])

# 或使用尖括号{}

s2 = {2, 2, 2, 1, 3, 3}

print(s1) # {1, 2, 3}

print(s2) # {1, 2, 3}

5.2 添加元素

使用add方法可以将元素添加到集合中

set1 = set(('a', 'bb', 'ccc'))

set1.add('dddd')

set1 # {'a', 'bb', 'ccc', 'dddd'}

除了add方法外,還可以使用update方法來添加元素,且參數可以是清單,元組,字典等

set1.update({5,6})

set1 # {5, 6, 'a', 'bb', 'ccc', 'dddd'}

5.3 删除元素

使用remove方法将元素 x 從集合 s 中移除,如果元素不存在,則會發生錯誤。

set1.remove('a')

set1 # {5, 6, 'bb', 'ccc', 'dddd'}

discard方法同樣移除集合中的元素,且如果元素不存在,不會發生錯誤。

set1.discard('h') # 不存在的元素,但不會報錯

set1 # {5, 6, 'bb', 'ccc', 'dddd'}

最後,還可以使用pop方法随機删除集合中的一個元素

set1.pop()

set1 # {5, 6, 'bb', 'ccc'}

5.4 集合運算

集合支援合并、交集、差分和對稱差等數學集合運算

python 字典值轉義_【Python連載】那些必須掌握的Python資料類型

下面舉一些例子

a = {1, 2, 3, 4, 5}

b = {3, 4, 5, 6, 7, 8}

print(a.union(b)) # {1, 2, 3, 4, 5, 6, 7, 8}

print(a.intersection(b)) # {3, 4, 5}

c = a.copy()

c |= b

print(c) # {1, 2, 3, 4, 5, 6, 7, 8}

d = a.copy()

d &= b

print(d) # {3, 4, 5}

6.常用序列函數

6.1 enumerate函數

enumerate() 函數用于将一個可周遊的資料對象(如清單、元組或字元串)組合為一個索引序列,同時列出資料和資料下标,一般用在 for 循環當中。

seasons = ['Spring','Summer','Fall','Winter']

for i,ele in enumerate(seasons):

print(i,ele)

# 結果如下:

0 Spring

1 Summer

2 Fall

3 Winter

6.2 sorted函數

sorted函數可以從任意序列的元素傳回一個新的排好序的清單

print(sorted([7, 1, 2, 6, 0, 3, 2])) # [0, 1, 2, 2, 3, 6, 7]

print(sorted('horse race')) # [' ', 'a', 'c', 'e', 'e', 'h', 'o', 'r', 'r', 's']

6.3 zip函數

zip可以将多個清單、元組或其它序列成對組合成一個元組清單.zip可以處理任意多的序列,元素的個數取決于最短的序列。

seq1 = ['foo', 'bar', 'baz']

seq2 = ['one', 'two', 'three']

zipped = zip(seq1, seq2)

print(list(zipped)) # [('foo', 'one'), ('bar', 'two'), ('baz', 'three')]

zip的常見用法之一是同時疊代多個序列,可能結合enumerate使用

for i, (a, b) in enumerate(zip(seq1, seq2)):

print('{0}: {1}, {2}'.format(i, a, b))

# 結果如下:

0: foo, one

1: bar, two

2: baz, three

6.4 reversed函數

reversed 函數傳回一個反轉的疊代器。

aa = range(10)

rr = reversed(aa)

print(list(rr)) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

至此,本次分享已結束 如果你喜歡的話,可以轉發或者點個“在看”支援一下~ 點選原文連結,可以下載下傳《Python工具代碼速查手冊》,可以點個star支援一下哦~

python 字典值轉義_【Python連載】那些必須掌握的Python資料類型

簡介:浩彬老撕 好玩的資料煉丹師, 曾經的IBM資料挖掘攻城獅, 還沒開始就過氣資料科學界的段子手, 緻力于資料科學知識分享,不定期送書活動

繼續閱讀