Python裡面的字典

2021-07-22 15:29:55 字數 3663 閱讀 5404

python 將這種資料型別叫做 「dict」,有的語言裡它的名稱是 「hash」。

這兩種名字都會用到,不過這並不重要,重要的是它們和列表的區別。你看,針對列表你可以做這樣的事情:

>>> 

things=[

'a',

'b',

'c',

'd']

>>>

print

things[1

]b>>>

things[1

]='z'>>>

print

things[1

]z>>>

print

things

['a', 'z', 'c', 'd']

>>>

你可以使用數字作為列表的索引,也就是你可以通過數字找到列表中的元素。而 

dict

所作的,是讓你可以通過任何東西找到元素,不只是數字。是的,字典可以將乙個物件和另外乙個東西關聯,不管它們的型別是什麼,我們來看看:

>>> 

stuff

=>>>

print

stuff

['name'

]zed

>>>

print

stuff

['age']36

>>>

print

stuff

['height']74

>>>

stuff

['city']=

"san francisco"

>>>

print

stuff

['city'

]san francisco

>>>

你將看到除了通過數字以外,我們還可以用字串來從字典中獲取 stuff

,我們還可以用字串來往字典中新增元素。當然它支援的不只有字串,我們還可以做這樣的事情:

>>> 

stuff[1

]="wow"

>>>

stuff[2

]="neato"

>>>

print

stuff[1

]wow

>>>

print

stuff[2

]neato

>>>

print

stuff

>>>

在這裡我使用了兩個數字。其實我可以使用任何東西,不過這麼說並不準確,不過你先這麼理解就行了。

當然了,乙個只能放東西進去的字典是沒啥意思的,所以我們還要有刪除物件的方法,也就是使用 del

這個關鍵字:

>>> 

delstuff

['city'

]>>>

delstuff[1

]>>>

delstuff[2

]>>>

stuff

>>>

接下來我們要做乙個練習:

cities

=cities

['ny']=

'new york'

cities

['or']=

'portland'

deffind_city

(themap

,state

):if

state

inthemap

:return

themap

[state

]else

:return

"not found."

# ok pay attention!

cities

['_find']=

find_city

while

true

:print

"state? (enter to quit)"

,state

=raw_input

("> ")if

notstate

:break

# this line is the most important ever! study!

city_found

=cities

['_find'

](cities

,state

)print

city_found

這裡是我們要討論的**:

cities

['_find']=

find_city

city_found

=cities

['_find'

](cities

,state

)

你要記住乙個函式也可以作為乙個變數,``def find_city`` 比如這一句建立了乙個你可以在任何地方都能使用的變數。在這段**裡,我們首先把函式 find_city

放到叫做 cities

的字典中,並將其標記為 '_find'

。 這和我們將州和市關聯起來的**做的事情一樣,只不過我們在這裡放了乙個函式的名稱。

好了,所以一旦我們知道 find_city

是在字典中 _find

的位置,這就意味著我們可以去呼叫它。第二行**可以分解成如下步驟:

python 看到 city_found

= 於是知道了需要建立乙個變數。

然後它讀到 cities

,然後知道了它是乙個字典

然後看到了 ['_find']

,於是 python 就從索引找到了字典 cities

中對應的位置,並且獲取了該位置的內容。

['_find']

這個位置的內容是我們的函式 find_city

,所以 python 就知道了這裡表示乙個函式,於是當它碰到 (

就開始了函式呼叫。

cities,

state

這兩個引數將被傳遞到函式 find_city

中,然後這個函式就被執行了。

find_city

接著從 cities

中尋找 states

,並且返回它找到的內容,如果什麼都沒找到,就返回乙個資訊說它什麼都沒找到。

python find_city

接受返回的資訊,最後將該資訊賦值給一開始的 city_found

這個變數。

我再教你乙個小技巧。如果你倒著閱讀的話,**可能會變得更容易理解。讓我們來試一下,一樣是那行:

state

和 city

是...

作為引數傳遞給...

乙個函式,位置在...

'_find'

然後尋找,目的地為...

cities

這個位置...

最後賦值給 city_found.

還有一種方法讀它,這回是「由里向外」。

找到表示式的中心位置,此次為 ['_find']

.逆時針追溯,首先看到的是乙個叫 cities

的字典,這樣就知道了 cities 中的 _find

元素。上一步得到乙個函式。繼續逆時針尋找,看到的是引數。

引數傳遞給函式後,函式會返回乙個值。然後再逆時針尋找。

最後,我們到了 city_found

= 的賦值位置,並且得到了最終結果。

python裡面的數學

一.基本運算子 1.算數運算 2.比較運算 特殊情況 不等於 新版本不支援 不等號 3.賦值運算 4.邏輯運算 not 非 非真即假,非假即真.and 並且 左右兩端同時為真,結果才為真.or 或者 左右兩端有乙個為真,結果就是真.true 真 1 判斷的結果 false 假 0 判斷的結果 pri...

python裡面的工廠模式

工廠模式 工廠模式 是乙個在軟體開發中用來建立物件的設計模型。使用工廠模式的應用場景 當不知道使用者想要建立什麼樣的物件時可以使用?工廠模式。乙個手機工廠模式 class phone object defpicture self print 照相 def call self print 打 clas...

python裡面的functools函式

在使用之前要先導入functools庫,偏函式是在一次呼叫之後再次呼叫時相應的引數就不用再傳了。如上圖所示 在第一次呼叫偏函式之後之前傳進去的值1,2,3一直在函式裡面。如果乙個函式 def note func note function def print note something retur...