一種分析代金券使用分佈情況的方法python實現版(下)

         上一篇文章中已經找到了用戶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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章