2016-04-14 14 views
0

Was ich versuche zu erreichen, ist eine Vereinigung von zwei Wörterbüchern (bestehend aus einzelnen Ganzzahlen ie 1, 2, 3, 4, usw.), indem Sie die Schlüssel aus dem Wörterbuch, Putting sie in zwei Listen, verbinden die beiden Listen und setzen sie dann in ein neues Wörterbuch zurück, das beide Listen enthält. Allerdings renne ich in denErstellen einer Vereinigung von zwei Wörterbüchern

TypeError: unsupported operand type(s) for +: 
    'builtin_function_or_method' and 'builtin_function_or_method' 

Wie würde ich diesen Fehler umgehen?

Hier sind die relevanten Teile des Codes.

class DictSet: 
    def __init__(self, elements): 
     self.newDict = {} 
     for i in elements: 
      self.newDict[i] = True 

    def union(self, otherset): 
     a = self.newDict.keys 
     b = otherset.newDict.keys 
     list1 = a + b 
     new = DictSet(list1) 
     return new 

def main(): 
    allints = DictSet([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 
    odds = DictSet([1, 3, 5, 7, 9]) 
    evens = DictSet([2, 4, 6, 8, 10]) 
+0

Bitte fügen Sie in Zukunft ein komplettes Programm in Ihre Frage ein. Es muss nicht lange dauern (in der Tat, je kürzer, desto besser!), Aber es muss vollständig sein. Für eine Erklärung, wie solche Fragen zu ausgezeichneten Antworten führen, siehe [ask] und insbesondere [mcve]. –

Antwort

2

Sie müssen die keys() Methode aufrufen. Versuchen Sie dies:

a = self.newDict.keys() 
    b = otherset.newDict.keys() 

EDIT: Ich sehe, Sie verwenden Python3. In diesem Fall:

a = list(self.newDict) 
    b = list(otherset.newDict) 
+0

Ich habe die von Ihnen vorgeschlagenen Änderungen vorgenommen und einen anderen Fehler erhalten: TypeError: Nicht unterstützte Operandentypen für +: 'dict_keys' und 'dict_keys' – corbrrrrr

2

Warum nicht dict.update() verwenden?

def union(self, otherset): 
    res = DictSet([]) 
    res.newDict = dict(self.newDict) 
    res.newDict.update(otherset.newDict) 
    return res 
Verwandte Themen