2017-01-07 47 views
0

你好,我有以下字典,用鑰匙和frecuencies:如何導入以下功能?

dictFrec = {'22': 21, '25': 9, '47': 21, '1': 22, '28': 20, '21': 12, '10': 136, '12': 106, '17': 20, '19': 39, '33': 89, '31': 40, '48': 52, '30': 37, '37': 18, '41': 114, '36': 49, '42': 30, '7': 22, '8': 29, '18': 22, '4': 18, '14': 49, '38': 16, '34': 37, '6': 11, '2': 19, '44': 16, '35': 69, '26': 52, '39': 30, '27': 16, '40': 24, '0': 31, '3': 21, '32': 71, '5': 17, '23': 27, '24': 36, '20': 26, '46': 19, '11': 28, '29': 50, '13': 19, '9': 101, '49': 44, '15': 23, '43': 17, '45': 37, '16': 72} 

我爲了得到5個最低值,我設計一個類中的以下功能:

import operator 

class getStrange: 

    def getStrangeD(my_dict): 
     strange=dict(sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)[:5]) 
     return strange 

問題是當我試圖將其導入如下:

from tools import getStrange as G 
newA = G.getStrangeD(dictFrec) 

我:

Traceback (most recent call last): 
    File "parser.py", line 55, in <module> 
    newA = G.getStrangeD(dictFrec) 
AttributeError: module 'tools.getStrange' has no attribute 'getStrangeD' 

所以我想收到有關該支持的,我想有這樣的功能,使更乾淨我的代碼,但是我不知道如何導入這個功能,哪裏是問題,感謝您的支持,

這個新類是存儲在一個文件,如下所示:

/tools$ ls 
getStrange.py __pycache__ 
+0

我不知道爲什麼你正在使用的類。否則你的代碼就可以正常工作。你似乎正在導入一個不同的'工具'模塊?檢查文件名('import tools; print(tools .__ file __)')。另一種可能是你沒有重新啓動你的腳本,Python仍在使用代碼的先前版本。 –

+0

這個文件的名字是什麼?它是'tools.py'還是它的'tools/getStrange.py'? – tdelaney

+0

@tdelaney – neo33

回答

1

你有兩個問題。首先,getStrangeD是作爲實例方法編寫的,但不包含self變量。由於它不使用實例數據,因此可以將其定義爲靜態方法。其次,由於它是班級的成員,因此您在訪問班級時需要包含班級名稱。

工具/ getStrange.py

import operator 

class getStrange: 

    @staticmethod 
    def getStrangeD(my_dict): 
     strange=dict(sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)[:5]) 
     return strange 

我們使用它

>>> from tools import getStrange as G 
>>> dictFrec = {'22': 21, '25': 9} # .... 
>>> newA = G.getStrange.getStrangeD(dictFrec) 
+0

謝謝我非常感謝支持,這真的很有幫助 – neo33