创建两个词典的联合

时间:2016-04-14 23:21:02

标签: python dictionary

我试图完成的是通过从字典中取出密钥,将它们分成两个列表来创建两个字典的联合(由单个整数组成,即1,2,3,4等),加入这两个列表然后将它们放回包含两个列表的新字典中。但是,我正在进入

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])

2 个答案:

答案 0 :(得分:2)

您必须调用keys()方法。试试这个:

    a = self.newDict.keys()
    b = otherset.newDict.keys()
编辑:我发现你使用的是Python3。在那种情况下:

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

答案 1 :(得分:2)

为什么不使用dict.update()

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