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

來源:互聯網
上載者:User

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

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.