2016-04-14 13 views
0

私が達成しようとしているのは、辞書からキーを取り出して、2つの辞書(1つの整数、つまり1、2、3、4など) 2つのリストを結合し、両方のリストを含む新しい辞書に戻します。しかし、私にぶつかっている2つの辞書の和集合を作成する

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

このエラーを回避するにはどうすればよいですか?

ここに関連するコードがあります。

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

今後、ご質問に完全なプログラムを含めてください。それは長くする必要はありません(実際には短い方が良いですが)、それは完全でなければなりません。このような質問をすることでどのように優れた回答が得られるのかについては、[ask]、特に[mcve]を参照してください。 –

答えて

2

keys()メソッドを呼び出す必要があります。これを試してください:

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

EDIT:あなたはPython3を使用しています。その場合:

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

あなたが提案した変更を加えて、別のエラーが発生しました:TypeError:+: 'dict_keys'と 'dict_keys'のサポートされていないオペランドタイプ – corbrrrrr

2

dict.update()を使用しない理由は?

def union(self, otherset): 
    res = DictSet([]) 
    res.newDict = dict(self.newDict) 
    res.newDict.update(otherset.newDict) 
    return res 
関連する問題