永遠的橘子園

[轉錄] Python – List、Dict 分析


來源:http://icodding.blogspot.tw/2016/05/python-listtuplestringdictset.html

1)列表(list)

列表是Python中最具靈活性的有序集合物件類型,與字串不同的是,列表可以包含任何種類的物件:數字,字串,甚至是其他列表.並且列表都是可變物件,它支持在原處修改的操作.也可以通過指定的索引和分片獲取元素.列表就可元組的可變版本.

定義一個列表使用一對中(方)括號」 [ ] 「.與元組不同的是, 列表有一些內置的函數對列表進行增加,修改和刪除等操作.可以通過list(seq)函數把一個序列類型轉換成一個列表。

#定義一個列表
listA = [‘a’, ‘b’, ‘c’, 1, 2]

# 向 list 中增加元素

# 1.使用append 向 list 的末尾追加單個元素。
listA.append(3)

# 2.使用 insert 將單個元素插入到 list 中。數值參數是插入點的索引
listA.insert(3, ‘d’) # 在下標為3處增加一個元素

# 3.使用 extend 用來連接 list
listA.extend([7, 8])

### extend 和 append 看起來類似,但實際上完全不同。
### extend 接受一個參數,這個參數總是一個 list,
### 並且把這個 list 中的每個元素增加到原 list 中。
### 另一方面,append 接受一個參數,這個參數可以是任何資料類型,並且簡單地追加到 list 的尾部。

# 獲取列表的長度
print len(listA) # 9

# 在 list 中搜索
listA.index(3) # index 在 list 中查找一個值的首次出現並返回索引值。

listA.index(‘100’) # 如果在 list 中沒有找到值,Python 會引發一個異常。

print 5 in listA # 要測試一個值是否在 list 內,使用 in。如果值存在,它返回 True,否則返為 False 。

# 從 list 中刪除元素

listA.remove(3) # remove 從 list 中 僅僅 刪除一個值的首次出現。如果在 list 中沒有找到值,Python 會引發一個異常

print listA.pop() # pop 它會做兩件事:刪除 list 的最後一個元素,然後返回刪除元素的值。

del listA[0] # 刪除列表中第一個元素

del listA[0:2] # 刪除列表中第一和第二個元素

# 迭代list
for item in listA:
print item

 

2)字典(dict)

字典(Dictionary) 是 Python 的內置資料類型之一,它定義了鍵和值之間一對一的關係,但它們是以無序的方式儲存的。 Python 中的 dictionary 像 Java 中的 Hashtable 類的範例。

定義 Dictionary 使用一對大(花)括號」 { } 」

# 定義一個字典
# Dictionary 不只是用於存儲字串。Dictionary 的值可以是任意資料類型,
# 包括字串、整數、物件,甚至其它的 dictionary。
# 在單個 dictionary 裡,dictionary 的值並不需要全都是同一資料類型,可以根據需要混用和匹配。
dict1 = {‘name’ : ‘LiuZhichao’, ‘age’ : 24, ‘sex’ : ‘Male’}

dict1[‘name’] = ‘Liuzc’ # 為一個已經存在的 dictionary key 賦值,將簡單覆蓋原有的值。

dict1[‘Age’] = 25 # 在 Python 中是區分大小寫的 age和Age是完全不同的兩個key

# 從字典中刪除元素
del dict1[‘sex’] # del 允許您使用 key 從一個 dictionary 中刪除獨立的元素

dict1.clear() # clear 從一個 dictionary 中清除所有元素

# —————————————-
#1)基本
d = {} #空字典
d = {‘name’:’tom’, ‘age’:22}
#等價
d = {}
d[‘name’] = ‘tom’
d[‘age’] = 22
2)dict
d = dict() #空
d = dict(name=’tom’, age=22)

d = dict([(‘name’,’tom’), (‘age’,22)])
#等價
keys = [‘name’,’age’]
values = [‘tom’, 22]
d = dict(zip(keys,values))

#3) fromkeys
>>> dict.fromkeys([‘name’,’age’],’default_value’)
{‘age’: ‘default_value’, ‘name’: ‘default_value’}

#判斷key是否存在
if k in d: #k not in
dosomething()

#讀取
print d[‘name’] #存在得到結果,但是若鍵不存在,將引發異常KeyError。慎用,建議不使用
print d.get(‘name’, ‘jack’) #存在得到,若鍵不存在,返回第二個參數default_value.若是沒有設default_value返回None

#使用用例
if k in d:
print d[k]

try:
print d[k]
except KeyError:
dosomething()

print d.get(k, default)
#等價 d[k] if k in d else default

#迭代
for key in d:
print key, d[key]
#等價 for key in d.keys()

for key,value in d.items():
print key, value

#修改
d[‘name’] = ‘tom’

d.update({‘name’:’tom’}) #這裡支持一整組值
d.update( [ (‘name’,’tom’), (‘age’,2) ] ) #每個元組兩個元素,(key,value)
d.update(‘name’=’tom’, ‘age’=4)

#刪除
del d[‘key’]
value = d.pop(‘key’) #刪除並返回值
d.clear() #清空

#排序
d = {‘a’:10, ‘c’:8, ‘b’:9, ‘d’:7}
#1)字典排序 按照key排序
keys = d.keys()
keys.sort()
for key in keys:
print d.get(key)
結果為:
10
9
8
7

#2) 按照value進行排序
sorted(d.items(), lambda x,y: cmp(x[1],y[1]))
結果為:
[(‘d’, 7), (‘c’, 8), (‘b’, 9), (‘a’, 10)]

#3) 另一種排序方法
sorted(d)
>>> print d
{‘a’: 10, ‘c’: 8, ‘b’: 9, ‘d’: 7}

 

 

 

 

心情小語:


縱使被說壞話、被討厭,也沒什麼好在意的。
因為「對方如何看你」,那是對方的事情。
                                           2016-11-13
**********************************

五月 2018
« 四月    
 12345
6789101112
13141516171819
20212223242526
2728293031