gpt4 book ai didi

python - 使用文件中的关键字和文件名创建关键字字典

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:13 25 4
gpt4 key购买 nike

我不知道为什么当我尝试测试此功能时会收到此错误。谁能帮我解决这个问题吗?

d[关键字] = [文件名,关键字]builtins.TypeError:不可散列的类型:'list'

我希望我的最终结果看起来像这样。{'关键字": ['文件名1', '文件名2'...]}其中文件名是在关键字列表中包含关键字的文件名

这是文件:

images/skating.jpg,East York Arena,2014.11.03,Shea skating.,skating,Shea,boy
images/sunglasses.jpg,High Park,2013.02.03,Cool guy.,Shea,sunglasses,happy
images/skating2.jpg,East York Arena,2014.11.03,Shea skating
again!,skating,Shea

def create_keyword_dict(open_file):
'''(file) -> dict of {str: list of str}
Given an open csv file with the format:
filename,location,date,caption,keywords,keywords, ...
return a new dictionary where the key is a keyword and each value
is a list of filenames that have that keyword in their list of keywords.
'''
d = {}
for line in open_file:
new_d = line.split(',')
filename = new_d[0]
keywords = new_d[5:]
if filename not in d:
d[keywords] = [filename, keywords]
return d

最佳答案

您不能使用列表作为字典键。您用作键的类型需要是可哈希的(这就是 TypeError: unhashable type 所指的。

您不需要使用列表,而是需要按单个关键字对文件进行排序和分组,并将它们用作键 - 这具有能够通过以下方式搜索列表的额外好处:单个关键字,而不是要求您拥有文件的所有关键字才能找到它。像这样的事情会起作用:

for line in open_file:
new_d = line.split(',')
filename = new_d[0]
keywords = new_d[5:]
for keyword in keywords:
if keyword not in d:
d[keyword] = [filename]
else:
d[keyword].append(filename)

关于python - 使用文件中的关键字和文件名创建关键字字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47275828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com