一.字典
一組鍵(key)和值(value)的組合领斥,通過鍵(key)進(jìn)行查找映九,沒有順序梦湘, 使用大括號(hào)”{}”;
1.1 現(xiàn)有字典 d={‘a(chǎn)’:24,‘g’:52件甥,‘i’:12捌议,‘k’:33}請(qǐng)按字典中的 value
值進(jìn)行排序:
>>> d={'a':24,'g':52,'i':12,'k':33}
>>> a = sorted(d.items(),key=lambda x :x[1])
>>> c=dict(a)
>>> print c
{'i': 12, 'a': 24, 'k': 33, 'g': 52}
>>>
1.2字典和 json 的區(qū)別
字典是一種數(shù)據(jù)結(jié)構(gòu),json 是一種數(shù)據(jù)的表現(xiàn)形式
1.python dict 字符串用單引號(hào)嚼蚀,json強(qiáng)制規(guī)定雙引號(hào)禁灼。
2.json key name 必須是字符串, python 是hashable,
1.3字典推導(dǎo)式
d = {key: value for (key, value) in iterable}
#快速兌換字典鍵—值
2 >>> mca={"a":1, "b":2, "c":3, "d":4}
3 >>> dicts={v:k for k,v in mca.items()}
4 >>> print dicts
5 {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
6 >>>
二. 字符串
str:字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號(hào)('或")來創(chuàng)建字符串轿曙。
2.1.理解\字符
1、轉(zhuǎn)義字符 2、路徑名中用來連接路徑名 3导帝、編寫太長(zhǎng)代碼手動(dòng)軟換行
2.2反轉(zhuǎn)字符串
>>> print 'astr'[::-1]
rtsa
2.3 將字符串"k:1|k1:2|k2:3|k3:4"守谓,處理成 Python 字典:{k:1,k1:2,... } # 字典里的 K 作為字符串處理
>>> a = "k:1|k1:2|k2:3|k3:4"
>>> print dict([m.split(':') for m in a.split("|")])
{'k3': '4', 'k2': '3', 'k': '1', 'k1': '2'}
>>>
2.4 alist [{'name':'a','age':20}您单,{'name':'b'斋荞,'age':30},{'name':'c'虐秦,'age':25}] 按age從大到小排
>>> sorted(alist,key =lambda x:x['age'],reverse =True)
[{'age': 30, 'name': 'b'}, {'age': 25, 'name': 'c'}, {'age': 20, 'name': 'a'}]
>>>
三.列表
列表的常用操作:
1)增加
往指定位置插入:insert(位置下標(biāo)平酿,元素)
末尾加: append
將可迭代對(duì)象中的元素追加到列表:a=list1,b=list2,a.extend(b)
2)取值和修改
根據(jù)下標(biāo)來
3)刪除
del 列表名[index]:刪除指定索引的數(shù)據(jù)。
remove(數(shù)據(jù)):刪除第一個(gè)出現(xiàn)的指定數(shù)據(jù)悦陋。
列表名.pop():刪除末尾的數(shù)據(jù),返回值: 返回被刪除的元素
列表名.pop(index):刪除指定索引的數(shù)據(jù)蜈彼,返回被刪除的元素。
列表名.clear():清空整個(gè)列表的元素俺驶。
4)排序
1列表名.sort(reverse =True/False):默認(rèn)False升序排序幸逆, 從小到大
2列表名.reverse():列表逆序、反轉(zhuǎn)暮现。
5)統(tǒng)計(jì)相關(guān)
len(列表名):得到列表的長(zhǎng)度还绘。
列表名.count(數(shù)據(jù)):數(shù)據(jù)在列表中出現(xiàn)的次數(shù)。
列表名.index(數(shù)據(jù)):數(shù)據(jù)在列表中首次出現(xiàn)時(shí)的索引栖袋,沒有查到會(huì)報(bào)錯(cuò)拍顷。
6)與print a[10]不一樣
>>> a =[1,2,3,4]
>>> print a[10:]
[ ]
7)找到兩個(gè)list中相同的元素
>>> a =[2,3,3,4,5]
>>> b =[1,2,3,3,7]
>>> print set(a)&set(b)
set([2, 3])
>>> print set(a)^set(b)
set([1, 4, 5, 7])
8)刪除一個(gè) list 里面的重復(fù)元素
最簡(jiǎn)單的使用set()
想要不改變他原先的順序:
用 list 類的 sort 方法:
1. l1 = ['b','c'塘幅,'d'菇怀,'b','c'晌块,'a'爱沟,'a']
2. l2 = list(set(l1))
3. l2.sort(key=l1.index)
4. print l2
也可以這樣寫:
1. l1 = ['b','c'匆背,'d'呼伸,'b','c'钝尸,'a'括享,'a']
2. l2 = sorted(set(l1),key=l1.index)
3. print l2
>>> def extendlist(val, list=[]):
... list.append(val)
... return list
...
>>> list1 = extendlist(10)
>>> list2 = extendlist(123, [])
>>> list3 = extendlist('a')
>>>
>>> print("list1 = %s" %list1)
list1 = [10, 'a']
>>> print("list1 = %s" %list1)
list1 = [10, 'a']
>>> print("list1 = %s" %list2)
list1 = [123]
>>> print("list1 = %s" %list3)
list1 = [10, 'a']
>>>
新的默認(rèn)列表只在函數(shù)被定義的那一刻創(chuàng)建一次珍促。當(dāng) extendList 被沒有指定特定參數(shù) list 調(diào)用時(shí)铃辖,這組 list 的值隨后將被使用。這是因?yàn)閹в心J(rèn)參數(shù)的表達(dá)式在函數(shù)被定義的時(shí)候被計(jì)算猪叙,不是在調(diào)用的時(shí)候被計(jì)算
>>> list1 = extendlist(10)
12430792
>>> list2 = extendlist(123, [ ])
12430712
>>> list3 = extendlist('a')
12430792
四. 元組
tuple:元組娇斩,元組將多樣的對(duì)象集合到一起仁卷,不能修改,通過索引進(jìn)行查找犬第,使用括號(hào)”()”;
五.集合
set:set 集合锦积,在 Python 中的書寫方式的{},集合與之前列表歉嗓、元組類似丰介,可以存儲(chǔ)多個(gè)數(shù)據(jù),但是這些數(shù)據(jù)是不重復(fù)的鉴分。集合對(duì)象還支持 union(聯(lián)合), intersection(交), difference(差)和
sysmmetric_difference(對(duì)稱差集)等數(shù)學(xué)運(yùn)算.
快速去除列表中的重復(fù)元素
交集:共有的部分 b&a
并集:總共的部分 b|a
差集:另一個(gè)集合中沒有的部分 b-a
對(duì)稱差集(在 a 或 b 中哮幢,但不會(huì)同時(shí)出現(xiàn)在二者中) b^a