Python设置为DICT将导致不可损坏的类型:“SET”

2024-05-14 21:52:48 发布

您现在位置:Python中文网/ 问答频道 /正文

一个星期以来,我开始使用python+tensorflow来积累机器学习的知识。我的主要目标是让keras提供的教程启动并运行,所以我自己对python的介绍是让这些加载函数正常工作,bc我被困在防火墙后面,pip无法下载。 现在我遇到了一个让我发疯的问题。 目前我正在做一个基本的回归,就像https://www.tensorflow.org/tutorials/keras/basic_text_classification-将整数转换回单词一样

其他的教程都在稍作修改后运行良好,但这一个让我抓狂。在

def get_word_index(path='training\imdb_word_index.json'):
with open('training\imdb_word_index.json') as f: 
    json1_str = f.read()
    json1_data = json.loads(json1_str)
    return dict(json1_data)

这段代码打开数据集并将其作为字典返回。 内容如下:

^{pr2}$

就这样。 我正试图扭转它,因为bc的内置函数似乎没有按预期工作。 现在我发现的最佳实践是 TypeError: unhashable type: 'list' when using built-in set function 这帮不了什么忙。 我的代码是

reverse_word_ind = {}
reverse_word_ind = dict.fromkeys(word_index.items(), 0)

这会引发错误:

TypeError: unhashable type: 'set'

经过多次实验,把它手动翻过来,然后打字成“dict”,我的耐心都没有了。 请帮忙。。。在


Tags: 函数代码jsondataindextensorflowtraining教程
1条回答
网友
1楼 · 发布于 2024-05-14 21:52:48

您可以用dict comprehension反转字典:

reverse_word_ind = {v:k for k,v in word_index.items()}

不是每一本字典都可以颠倒。这是因为虽然对可以作为字典值的对象类型没有限制,但是有restrictions as to what types can be keys。在

您得到的错误意味着字典中至少有一个值是集合,这与您的预期相反。您可以通过在try...except子句中执行字典反转来调试正在发生的事情并找出错误值:

^{pr2}$

运行上面的代码应该会产生与之前相同的TypeError,但是现在它将首先打印出一条有用的错误消息,指出字典中的错误值。在

相关问题 更多 >

    热门问题