简体   繁体   English

Leetcode 3Sum TypeError: tuple object 不支持项赋值

[英]Leetcode 3Sum TypeError: tuple object does not support item assignment

I'm getting a TypeError: tuple object does not support item assignment for line result_dict[t] = 0 .我收到 TypeError: tuple object does not support item assignment for line result_dict[t] = 0 I want to check if my logic for 3Sum is correct, however, I'm not able to understand this issue.我想检查我的 3Sum 逻辑是否正确,但是,我无法理解这个问题。

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        i = 0
        result = []
        my_dict = dict()
        result_dict = ()
        
        for i in range(len(nums)):
            my_dict[nums[i]] = i
        
        for j in range(len(nums) - 1):
            target = nums[j]
            
            for i in range(j+1, len(nums)):
                y = -target - nums[i]
                key_check = tuple(sorted((nums[j], nums[i], y)))
                if key_check in result_dict:
                    continue
                if  my_dict.get(y) and my_dict[y]!=i and my_dict[y]!=j:
                    #result.append([nums[j], nums[i], y])
                    t = tuple(sorted((nums[j], nums[i], y)))
                    result_dict[t] = 0

        
        for key in result_dict.keys():
            result.append(list(key))
        return result
        #return list(set([ tuple(sorted(t)) for t in result ]))
            

An empty dictionary is created with empty curly brackets {} .使用空大括号{}创建一个空字典。 Empty parentheses () will instead create a tuple which is basically an immutable list.空括号()将创建一个基本上是不可变列表的元组。

result_dict = {}

Will fix your code.将修复您的代码。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM