我有这样的列表和字典:
list_1 = ['if looks kill then i'm murdering]
dic_1 = {"kill": -2, "murdering": -3}
我想提取与字典键匹配的列表项并将其附加到集合中。 我有两个问题: 1.我无法提取与字典中的键匹配的列表项 2. 如何将列表项附加到集合中?
set_1 = set()
for items in list_1:
list_1 = items.lower().split()
for term in dic_1:
forth_list = [words for words in list_1 if term != words]
print forth_list
这将打印
['if', 'looks', 'then', 'i', 'm', 'murdering']
['if', 'looks', 'kill', 'then', 'i', 'm']
set_1.add(forth_list) # this produce a TypeError: unhashable type: 'list'
print set_1
请您参考如下方法:
查找列表中哪些元素在字典中的最有效方法是使用 dictionary views :
set_1 |= dic_1.viewkeys() & list_1
dic_1.viewkeys() 返回的字典 View 本质上是一个集合,通过使用 & 我们获取该集合和列表的交集。
|= 语法使用就地 OR 更新集合以添加在右侧找到但不在集合中的任何元素。
或者,您可以使用 set.update() method . .add() 方法一次接受一个 元素,但您想将列表 中的所有元素添加到集合中,而不是列表本身。
演示:
>>> list_1 = "if looks kill then i'm murdering".split()
>>> dic_1 = {"kill": -2, "murdering": -3, "monty": 5}
>>> set_1 = set()
>>> set_1 |= dic_1.viewkeys() & list_1
>>> set_1
set(['murdering', 'kill'])
>>> set_1 |= dic_1.viewkeys() & "monty python's flying circus".split()
>>> set_1
set(['murdering', 'kill', 'monty'])
