在python

时间:2018-04-18 14:22:49

标签: python python-3.x list-comprehension typeerror

我的代码中有一个名为malicious_urls的集合,我正在尝试从中构建列表解析。

当我运行'' in malicious_urls时,我获得False返回值。另外,我有一个数组input,当我运行[e for e in input]时,我得到了与输入相同的设置。

但是,当我尝试运行[e in malicious_urls for e in input]只是获取一个输入网址是恶意的列表时,我收到错误回复TypeError: unhashable type: 'list'

2 个答案:

答案 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'}