【发布时间】:2020-05-02 04:32:47
【问题描述】:
当我尝试使用以下语句初始化集合时:
myset = {['ki','ni']}
我收到以下错误:
TypeError: unhashable type: 'list'
但是,我可以使用 set() 函数使用相同的列表初始化集合,如下所示:
myset = set(['ki','ni'])
我知道集合的元素必须是不可变的,因此我在第一种情况下指定的错误可能就是由于这个原因。令人困惑的是,为什么这在使用 set() 函数时有效,而不是在使用花括号 ({}) 大括号直接初始化集合时有效?
【问题讨论】:
-
您的第二个代码相当于
{*['ki', 'ni']}。它看起来像{'ki', 'ni'}。{*['ki','ni']} == set(['ki','ni'])计算结果为True。注意,输出是{'ki', 'ni'}而不是{['ki', 'ni']}。
标签: python python-3.x