我试图完成的是通过从字典中取出密钥,将它们分成两个列表来创建两个字典的联合(由单个整数组成,即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])
答案 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