Python调用intersection()方法报TypeError: unhashable type: 'list'错误
问题原因
- 语法错误:函数定义
def main()末尾遗漏英文冒号,会先触发语法报错 - 核心逻辑错误:
resp.split()返回列表类型,使用append()会将整个列表作为单个元素存入provided_List,最终得到嵌套列表;同时只有集合(set)支持intersection交集方法,列表本身无该方法,且列表属于不可哈希类型,无法参与集合运算,因此触发TypeError: unhashable type: 'list'
修正代码
# 提前将预设关键词转为集合,方便后续交集运算 main_keywords = {"name", "job", "backstory", "all"} def main(): resp = input("Do you need a name, job, backstory, or all?") # 将用户输入分割后转成集合,和预设关键词取交集,自动过滤无关内容 user_input = set(resp.split()) matched = user_input.intersection(main_keywords) # 若需要返回列表格式可改为 print(list(matched)) print(matched) main()
效果说明
如果用户输入name test backstory 123,最终输出为{'name', 'backstory'},自动过滤了输入中的非关键词内容,符合需求。
内容的提问来源于stack exchange,提问作者phynix
相关产品推荐
相关产品推荐

