为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

元芳怎么了 2021-03-21 10:13:04
我有这样的列表和字典: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      
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

在字典中查找列表中哪些元素的最有效方法是使用字典视图:


set_1 |= dic_1.viewkeys() & list_1

诸如的返回的字典视图dic_1.viewkeys()本质上是一个集合,通过使用&我们可以获取该集合和列表的交集。


该|=语法使用就地OR来更新集合,以添加在集合右侧尚未找到的任何元素。


或者,您可以使用set.update()方法。该.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'])


查看完整回答
反对 回复 2021-03-23
  • 2 回答
  • 0 关注
  • 265 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号