上一篇文章中已經找到了使用者ID和領取代金券的數量,並按降序排序,下面要做的就簡單了,有了前面的經驗,我們照抄三份,一份去分析交易的情況,一份去查詢使用者黑名單庫,最後一份去查看使用者註冊的時間和註冊時使用的IP地址。
上篇已經把所有的實現展示給大家了,這一次主要是講解其中的注意事項:
第一:對於按行讀取的所有資訊,會包含最後的分行符號,如果不是直接拼接字串也沒有關係,但是當拼接SQL語句時會出現類似select user_id from tb_user_gift where id = '123
';的問題,所以在讀取資訊後,要去掉尾部的分行符號,替換的方法line = line.strip('\n')
第二:dict(字典)中的元素按照一定的規則排序,我們把處理的結果組織成key,value的形式,對於同一個key,如果遇到新的value,則把它累加,這樣對於處理一個使用者領取了多張代金券是有意義的,利用dict的items方法,把dict的內容組織成一個一個的元組,如
>>> map={}
>>> map["n1"] = 1
>>> map["n2"] = 3
>>>
>>> print map
{'n1': 1, 'n2': 3}
>>> map.items()
[('n1', 1), ('n2', 3)]
>>>
由於我們需要根據個數的降序顯示,利用array中的排序方法來實現:arr = [ v for v in sorted(map.items(), cmp=reverse_numeric)],由於預設的排序方法不滿足我們的要求,故還需要實現一個排序的方法,
def reverse_numeric(x, y):
return y[1]- x[1]
此方法只適用於參數為整數的情況,因為比較的函數只能返回整數,對於非整數的情況,使用下面的方法:
def reverse_numeric(x, y):
if (y[1]- x[1]) > 0:
return 1
elif (y[1]- x[1]) == 0:
return 0
return -1