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)
找出哪个。