python字典(數組)操作排序之學習筆記

來源:互聯網
上載者:User


字典是最與php的數組相似的序列結構。python的列表只能是以索引數字開頭並且順序遞增的序列。字典則可以是以字母為key的序列。

元組一般用圓括弧來表示,如(1,2,3)
列表一般用方括弧來表示,如[1,2,3]
而字典(dict)則用大括弧來表示,如{‘a’:1,’b':2,’c':3}

與php不同,php的key,value是用key=>value來表示,python而是用冒號“:”來分隔。

字典可以使用大括弧書寫鍵和值或使用dict函數來建立。
dict函數可以指定兩個元組或列表來對應建立字典。如:

items = [('name','gumby'),('age','42')]
d = dict(items)

與列表的區別:

k in d(d為字典),尋找的是鍵,而非value,運算式 v in l(l為列表)則用來尋找值,而不是索引。

一些字典方法:

clear 清除字典。“原地操作”,不會傳回值,類似於列表的sort方法
copy方法返回一個相同索引值對兒的新字典。淺複製。因為值本身就是相同的,而不是副本。
在副本中替換值的時候,原始字典不受影響。但是如果修改了某個值,原始字典也會改變。避免這個問題的一種方法就是使用深度複製(deep copy)。

from copy import deepcopy
deepcopy(d)

d.fromkes方法使用給定的值建立新字典。每個鍵預設對應的是None
get方法擷取一個不存在的鍵時,不會報錯,會返回None
has_key方法相法於運算式k in d
items方法將所有的字母項以列表的方式返回。這些列表中的每一項都來自於(鍵,值)。但是項在返回時沒有特殊的順序。
iteritmes的方法大致相同,但是會返回一個迭代器對象而不是列表。在很多情況下iteritems效率更高。迭代器,相當於decode json之後的對象,而非數組、
keys方法將字典中的鍵以列表的形式返回。而iterkeys則返回針對鍵的迭代器。
pop彈出給定鍵的值。popitem會彈出最後一個元素(實際上是隨機項),但如果想一個接一個地移除並處理字典,popitem效率就會高很多,因為不必先擷取字典的索引值列表。

values和itervalues方法以列表或迭代器的形式返回字典中的值,傳回值的列表可以包含重複項。

看些python 字典操作執行個體

假設字典為dics = {0:'a', 1:'b', 'c':3}

1.從字典中取值,當鍵不存在時不想處理異常

[方法]  dics.get('key', 'not found')

[例如]

           

[解釋] 當鍵'key'不存在是,列印'not found'(即想要處理的資訊),當存在是輸出索引值。

【其他解決方案一】

if key in dics:         print dics[key] else:         print 'not found!!'

【其他解決方案二】

try:         print dics[key] except KeyError:         print 'not found'

例子:

          

2.從字典中取值,若找到則刪除;當鍵不存在時不想處理異常

[方法]  dics.pop('key', 'not found')

[例如]

          

[解釋] 當鍵'key'不存在是,列印'not found'(即想要處理的資訊),當存在是輸出索引值,並且去除該健。

3.給字典添加一個條目。如果不存在,就指定特定的值;若存在,就算了。

[方法] dic.setdefault(key, default)

[例如]

      

python 字典排序

 

dic = {'a':3 , 'b':2 , 'c': 1}
   
注意
排序之後原字典沒有變,順序依舊
    
兩個函數
1.lambda
功能: 建立匿名函數
區別: 和def函數定義,以下兩點區別
  • lambda會建立一個函數對象,但不會把這個函數對象賦給一個標識符;而def則會把函數對象賦值給一個變數
  • lambda它只是一個運算式,而def則是一個語句
案例:
   
2.iteritems()
功能: iteritems()以迭代器對象返回字典索引值對
區別: 和item相比:items以列表形式返回字典索引值對
案例:
   
注釋: 在函數sorted(dic.iteritems(), key = lambda asd:asd[1])中,第一個參數傳給第二個參數“鍵-索引值”,第二個參數取出其中的鍵([0])或索引值(1])

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.