字典的setdefault方法

2022-06-28 09:06:11 字數 2375 閱讀 7344

python 字典 setdefault() 函式和get() 方法類似, 

語法:

dict.setdefault(key, default=value)

如果鍵(key)不存在於字典中,將會新增鍵(key)並將值設為預設值(value)。

如果鍵(key)已經存在, 則什麼也不做

例項:

dict = 

print

"value : %s

" % dict.setdefault('

runoob

', none)

print

"value : %s

" % dict.setdefault('

taobao

', '

**')

#

longer.. harder to read

values ={}

for element in

iterable:

if element not

invalues:

values[element] =

#better.. use dict.setdefault method

values ={}

for element in

iterable:

#

將data的資料更新到stack中的列表中

data =

stack =

#方式一 low

for element in

data:

#element = user, user1, user2

if element not

instack:

stack[element] =

#方式二 better

for element in

data:

print(stack)  #

邏輯:

1 以使用者的唯一標示為鍵,再以使用者的訪問記錄的列表為值

2 在使用者下一次訪問時判斷列表的最後乙個時間戳是否小於(當前時間-頻率時間);如果小於,則剔除;

3 然後再判斷列表的長度時候超過頻率數,如超過,則return false,else true

資料結構:

**實現

class

visitthrottlebetter(basethrottle):

"""優化過**的頻率限制類

"""def

__init__

(self):

self.visited_record =none

defallow_request(self, request, view):

"""在allow_request中編寫頻率業務邏輯

"""remote_addr = request.meta.get('

remote_addr')

#print(remote_addr)

ctime =time.time()

#1 有記錄來則將其新增到訪問記錄裡

visit_record.setdefault(remote_addr, ).insert(0, ctime)

#2 判斷列表的最後乙個是否小於(當前時間-頻率時間);如果小於,則剔除;

self.visited_record =visit_record.get(remote_addr)

while self.visited_record and self.visited_record[-1] < ctime - 60:

self.visited_record.pop()

#3 然後再判斷列表的長度是否超過頻率數,如不超過,則return true,else false

if len(self.visited_record) <= 3:

#/不超過頻率數

return

true

else

:

#/超過頻率數

return

false

defwait(self):

"""如果allow_request中沒有通過, wait裡寫再等多少秒就可以訪問了

"""ctime =time.time()

first_visit_duration = ctime - self.visited_record[-1] #

現在離第一次訪問過了多久啦

return 60 - first_visit_duration

字典setdefault使用

字典setdefault方法的使用 d.setdefault k,default 如果有k,則返回。如果沒有則讓 k default,然會返回default 案例 統計文字中每個單詞出現的位置 格式 import re import sys 返回pattern物件 word re re.compil...

Python 字典的setdefault 方法

setdefault key default if key is in the dictionary,return its value.if not,insert key with a value of default and return default.default defaults to n...

字典中setdefault 函式用法

python 字典中乙個 方法 setdefault 來看下說明 如果沒有 key 會加入 這個key setdefault key default 並且可以指定 乙個預設值,如果沒有指定,則認為是none 返回,如果 指定了default 則直接返回 default值 如果有這個key 直接返回字...