我的代码中有一个名为malicious_urls
的集合,我正在尝试从中构建列表解析。
当我运行'' in malicious_urls
时,我获得False
返回值。另外,我有一个数组input
,当我运行[e for e in input]
时,我得到了与输入相同的设置。
但是,当我尝试运行[e in malicious_urls for e in input]
只是获取一个输入网址是恶意的列表时,我收到错误回复TypeError: unhashable type: 'list'
?
答案 0 :(得分:1)
如果input
是一个列表列表(听起来像是这样),那么你的列表理解就会错过一个步骤。
[[e in malicious_urls for e in i] for i in input]
离。
s = {'a', 'b'}
l = [['a', 'c'], ['c', 'b']]
[[e in s for e in i] for i in l]
> [[True, False], [False, True]]
如果你想要一个扁平的列表,你也可以使用列表理解。
[item for sublist in [[e in s for e in i] for i in l] for item in sublist]
答案 1 :(得分:1)
我认为这不是一个使用列表理解的好地方,因为你想要的是两个列表的交集。
相反,我会使用set
,因为集合将交集作为基本操作:
>>> malicious = {'badsite.com', 'reallybadsite.com', 'literallywillkillcomputer.com'}
>>> sites = {'badsite.com', 'goodsite.com', 'literallywillkillcomputer.com'}
>>> sites & malicious
{'badsite.com', 'literallywillkillcomputer.com'}