Skip to main content
 首页 » 编程设计

python之如何使用字典键提取列表项

2025年05月04日13arxive

我有这样的列表和字典:

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'])