我有這樣的列表和字典: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'])
添加回答
舉報
0/150
提交
取消