1. 程式人生 > >python基礎複習(二)

python基礎複習(二)

dict

應用:dict()函式可以將兩元素list組成的元組變為字典 

>>> name = (["first","google"],["second","Yahoo"])
>>> website = dict(name)
>>> website
{'first': 'google', 'second': 'Yahoo'}

根據key得到字典中的值

>>> person ={'name2': 'qiwsir', 'name': 'qiwsir', 'language': 'python', 'site': 'qiwsir.github.io'}

>>> for key in person:      #for迴圈遍歷key列表
    print(person[key])      #根據key獲取對應的值
qiwsir
qiwsir
python
qiwsir.github.io

巢狀

>>> a_dict = {1:{"name":"qiwsir"},2:"python","email":"[email protected]"}
>>> a_dict[1]['name']
'qiwsir

獲取鍵、值的方法:

獲取key

>>> website = {1:"google","second":"baidu",3:"facebook","twitter":4}
>>> website.keys()
dict_keys([1, 'second', 3, 'twitter'])

>>> for key in website.keys():   #迴圈得到key值
    print(key,type(key))

    
1 <class 'int'>
second <class 'str'>
3 <class 'int'>
twitter <class 'str'>

簡化寫法:

>>> for key in website:
    print(key,type(key))

    
1 <class 'int'>
second <class 'str'>
3 <class 'int'>
twitter <class 'str'>

獲取值:

>>> website.values()
dict_values(['google', 'baidu', 'facebook', 4])

>>> for value in website.values():
    print(value)

    
google
baidu
facebook
4

另一種方法:遍歷key,根據key得到value

>>> for key in website:
    print(website[key])

    
google
baidu
facebook
4

獲取鍵值對組成的元組

>>> website.items()
dict_items([(1, 'google'), ('second', 'baidu'), (3, 'facebook'), ('twitter', 4)])

>>> for tuple in website.items():
    print(tuple)

    
(1, 'google')
('second', 'baidu')
(3, 'facebook')
('twitter', 4)

>>> for k,v in website.items():   #特定的形式遍歷字典的鍵值對
    print(str(k)+':'+str(v))

    
1:google
second:baidu
3:facebook
twitter:4

>>> for k in website:        #常規方法遍歷鍵值對
    print(str(k)+ ":" + str(website[k]))

    
1:google
second:baidu
3:facebook
twitter:4

>>> len(website)  #字典長度
4

刪除鍵值對:

>>> website.pop()                      #字典是無序的,所有pop函式的引數不能省略
Traceback (most recent call last):
  File "<pyshell#57>", line 1, in <module>
    website.pop()
TypeError: pop expected at least 1 arguments, got 0
>>> website.pop(1)               #刪除指定鍵的值,得到的是刪除的值
'google'
>>> website      #刪除後字典的最終結果
{'second': 'baidu', 3: 'facebook', 'twitter': 4}

>>> del website[3]     # del 直接刪除
>>> website
{'second': 'baidu', 'twitter': 4}

d.update(d2)     # 把d2合併到d中,d是合併後的,d2無變化

>>> d ={'qq': 'first in cn', 'python': 'qiwsir.github.io', 'alibaba': 'Business'}
>>> d2 = {1: 'google', 'second': 'baidu', 3: 'facebook', 'twitter': 4}
>>> d.update(d2)
>>> d
{'qq': 'first in cn', 'python': 'qiwsir.github.io', 'alibaba': 'Business', 1: 'google', 'second': 'baidu', 3: 'facebook', 'twitter': 4}
>>> d2
{1: 'google', 'second': 'baidu', 3: 'facebook', 'twitter': 4}

類似list中的extend

>>> list = [1,2,3,'ee','dd']
>>> list2 = ['f','g']
>>> list.extend(list2)
>>> list
[1, 2, 3, 'ee', 'dd', 'f', 'g']
>>> list2
['f', 'g']
>>> list.append(list2)
>>> list
[1, 2, 3, 'ee', 'dd', 'f', 'g', ['f', 'g']]

助記:字典更新update,列表拓展extend,append當做整體拓展

python3中字典的解析         #埋下一個研究方向


元組

元組不能修改,需要修改時可用list()方法將其轉化為list

str、list與tuple相互轉化:

>>> s = 'xxxxx'
>>> l = list(s)
>>> l
['x', 'x', 'x', 'x', 'x']
>>> t = tuple(s)
>>> t
('x', 'x', 'x', 'x', 'x')
>>> l1 = list(t)
>>> l1
['x', 'x', 'x', 'x', 'x']
>>> t1 = tuple(l)
>>> t1
('x', 'x', 'x', 'x', 'x')
>>> l2 = [1,2,'e']
>>> t2 = (3,'sss')
>>> ''.join(l2)
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    ''.join(l2)
TypeError: sequence item 0: expected str instance, int found      #l2中含有int型元素,list或tuple轉str時不能含有int型元素

>>> l2 = ['3','dd','e']
>>> ''.join(l2)
'3dde'

>>> t2 = ('sss','gg','k')
>>> ''.join(t2)
'sssggk'

Tuple的特點:

  • Tuple 比 list 操作速度快。
  • 如果對不需要修改的資料進行 “防寫”,可以使程式碼更安全。
  • Tuples 可以在 dictionary 中被用做 key,但是 list 不行。
  • Tuples 可以用在字串格式化中,後面會用到。

set(集合)

set的特點:元素不可重複,無序

把字串轉化為集合

>>> s1 = set("qiwsir")
>>> s1                    
{'q', 'i', 'r', 'w', 's'}                       # 1、拆開字串;2、qiwsir"中有兩個"i",自動去重了。

>>> s2 = set([123,"google","face","book","facebook","book"])
>>> s2
{'face', 123, 'facebook', 'book', 'google'}      #去重且順序變了

不能直接建立含有dict或list的集合

>>> s1 = set(['q','i','s','r','w'])
>>> s1[1] = 'I'
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    s1[1] = 'I'
TypeError: 'set' object does not support item assignment    #集合是無序的,不能以編號(偏移量)的方式修改 ;可將其轉化為list後再以編號的方式修改。

增加:

>>> a_set.add('[1,2,3]')     #集合中不能包含list,可以把list轉換為str格式
>>> a_set
{'a', 'i', 'qiwsir', '[1,2,3]'}

合併:s1.update(s2)       #把s2合併到s1中,且s2不變,類似dict

>>> s1 =set([1,2,3])
>>> s2 =set([2,3,'d'])
>>> s1.update(s2)
>>> s1                      #合併集合並去重了
{1, 2, 3, 'd'}

刪除:

>>> s1 = set("qiwsir")
>>> s1
{'q', 'i', 'r', 'w', 's'}
>>> s1.pop()          #因集合是無序的,故pop()會從中任選一個元素刪除
'q'

>>> s1 = set("qiwsir")
>>> s1
{'q', 'i', 'r', 'w', 's'}
>>> s1.pop('i')                         #不支援刪除指定的元素
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    s1.pop('i')
TypeError: pop() takes no arguments (1 given)   #不應該有引數,但給了一個引數

remove   #刪除set的指定元素

>>> s1
{'q', 'i', 'r', 'w', 's'}
>>> s1.remove('i')
>>> s1
{'q', 'r', 'w', 's'}

discard 與remove的區別:  #discard也是刪除集合中的指定元素,刪除不在集合中的元素時不會報錯,而remove會報錯

>>> s1.remove('l')
Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    s1.remove('l')
KeyError: 'l'

>>> s1.discard('q')
>>> s1
{'r', 'w', 's'}
>>> s1.discard('q')    #discard也是刪除集合中的指定元素,刪除不在集合中的元素時不會報錯,而remove會報錯
>>> 

clear  #清空集合中所有元素

>>> s1
{'r', 'w', 's'}
>>> s1.clear()
>>> s1
set()
>>> bool(s1)
False