Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不易损坏类型:';设置';错误_Python_Python 3.x_Set - Fatal编程技术网

Python 不易损坏类型:';设置';错误

Python 不易损坏类型:';设置';错误,python,python-3.x,set,Python,Python 3.x,Set,我试图在字典中找到两个键的公共值,并将其作为一个集合返回。但是,当我想将列表更改回集合(如代码最后一行所示)时,它会产生错误“unhabable type”。我知道这个错误意味着什么,但不幸的是,我不知道在这种情况下如何修复它 def values_in_common(dict, key1, key2): a = [] b = [] for i, e in dict.items(): if i == key1: a.append(e) if i == key2:

我试图在字典中找到两个键的公共值,并将其作为一个集合返回。但是,当我想将列表更改回集合(如代码最后一行所示)时,它会产生错误
“unhabable type”
。我知道这个错误意味着什么,但不幸的是,我不知道在这种情况下如何修复它

def values_in_common(dict, key1, key2):
a = []
b = []
for i, e in dict.items():
    if i == key1:
        a.append(e)
    if i == key2:
        b.append(e)
x = []
for i in a:
    if i in b:
        x.append(i)
return set(x)

我不确定您的代码实际应该做什么,但我的理解是:

a = dict.get(key1) or []
b = dict.get(key2) or []
因此,无论什么值存储在key1和key2中,或者如果字典中没有合适的键,则存储在空列表中

然后,您希望在a和b中找到公共元素,例如:

return set(a) & set(b)

回答您的问题,我认为您发布的代码没有问题,但您传递给函数的参数有问题。

我不确定您的代码实际应该做什么,但我的理解是:

a = dict.get(key1) or []
b = dict.get(key2) or []
因此,无论什么值存储在key1和key2中,或者如果字典中没有合适的键,则存储在空列表中

然后,您希望在a和b中找到公共元素,例如:

return set(a) & set(b)

回答您的问题,我认为您发布的代码没有问题,但传递给函数的参数有问题。

列表中的一项是不可散列的类型(例如
list
dict
)。使用
print(x)
找出哪个。列表中的一项是不可散列的类型(例如
list
dict
)。使用
print(x)
找出哪个。