2017-10-11 131 views
0

我有這樣一段代碼:蟒蛇: '字典' 對象有沒有屬性 '對象的has_key'

def separate_sets(self): 
    self.groups = {} 
    self.group_names = list(set(self.y)) 
    if len(self.group_names) > 2: 
     print ('more than two classes provided...exiting') 
     sys.exit() 
    #putting all the samples in a regular order so that their 
    #grouping can be easier. 
    combined = sorted(zip(self.x, self.y), key = lambda n: n[1]) 
    #--doing val,key here because (x,y) was zipped 
    for val,key in combined: 
     if self.groups.has_key(key): 
      self.groups[key].append(val) 
     else: 
      self.groups[key] = [] 
      self.groups[key].append(val) 
    #train on each group 
    self.train() 

我收到以下錯誤信息:

if self.groups.has_key(key):

AttributeError: 'dict' object has no attribute 'has_key'

+1

怎麼樣的錯誤不清楚? ['has_key'已被棄用](https://docs.python.org/2/library/stdtypes.html#dict.has_key)。你有沒有使用Python 3? –

回答

3

在Python中你可以使用「在」檢查

if key in self.groups: 
4

在Python 3.x中,has_key()被刪除,請參閱。因此,你必須使用in,這是Python的方式:

if key in self.groups: 
0

截至python 3.x has_key was removed,現在你必須使用在運營商

+0

您沒有看到其他2個相同內容的答案? –

+0

@cᴏʟᴅsᴘᴇᴇᴅ發佈的時間與ÓscarLópez的答案相同;) –

1

您可以通過使用setdefault方法

全消 if聲明
self.groups.setdefault(key, []).append(val) 
+0

哦,你的意思是整個'if'到'else'? –

+0

是的。如果'key'不在'dict'中,'setdefault'返回對'self.groups [key]'的引用,或'']'。無論哪種方式,您都可以在結果列表中添加「val」。 – chepner

相關問題