这是我的代码:
nums = sorted(nums)
n = len(nums)
maps = { 0 : [nums[0]]}
maps[2] = ["shot"]
dp = [1 for _ in nums]
for i in range(1 , n):
for j in range(i , -1 , -1):
if nums[i] % nums[j] == 0:
dp[i] = dp[j]+1
print(maps)
if i not in maps.keys():
maps[i] = maps[j].append(nums[i])
错误信息:
KeyError: 1
maps[i] = maps[j].append(nums[i])
Line 15 in largestDivisibleSubset (Solution.py)
ret = Solution().largestDivisibleSubset(param_1)
Line 41 in _driver (Solution.py)
_driver()
Line 52 in <module> (Solution.py)
输入:nums = [1,2,3,5,7]
您只能使用append方法向已经存在的键插入值。所以你可以这样做:
maps[i] = nums[i]
或:
maps[i] = nums[j]
这是你的问题节:
if i not in maps.keys():
maps[i] = maps[j].append(nums[i])
这里你问'如果i不在地图字典中,那么从nums数组中获取索引i处的值,并将其附加到地图字典中键j引用的值,然后将该函数的结果分配回字典中键i的值'。
append()
返回None
,这意味着您只需将None
放在键i
上。但你的错误实际上是说,关键1
不存在于你正在寻找的对象。假定是maps
,因为您正在尝试解引用maps[j]
-并且j
不是maps
中的键之一。因为它不能被获取,如果你这样做,它将是None
,你不能向它添加任何东西。
这里不能给出一个明确的解决方案,因为它不清楚你想以什么结束。给定[1,2,3,5,7]
的输入数组,您期望maps
在此函数结束时看起来像什么?
有一件事可能会有帮助,比如:
if i not in maps.keys():
ls = maps.get(j, [])
ls.append(nums[i])
maps[i] = ls
在这里,我们获得索引j
的列表,如果j
不在映射中,则返回默认的空列表[]
。然后将修改后的列表赋值给键i
。我不确定这是否真的是你要找的,虽然。