首页 > 解决方案 > 使用列表设置初始化 - 两种不同的方法,一种不起作用

问题描述

当我尝试使用以下语句初始化集合时:

myset = {['ki','ni']}

我收到以下错误:

类型错误:不可散列类型:“列表”

但是,我可以使用 set() 函数使用相同的列表初始化集合,如下所示:

myset = set(['ki','ni'])

我知道集合的元素必须是不可变的,因此我在第一种情况下指定的错误可能就是由于这个原因。令人困惑的是,为什么这在使用 set() 函数时有效,而不是在使用花括号 ({}) 大括号直接初始化集合时有效?

标签: pythonpython-3.x

解决方案


{['ki','ni']}表示包含一个元素的集合,['ki','ni']。这不是集合的有效元素,因此您会收到错误消息。

set(iterable)表示包含 中所有项目的集合,即,如果您使用 for 循环进行iterable迭代,您会得到什么。iterable在这种情况下,它的计算结果为{'ki','ni'},一个包含两个字符串的集合。


推荐阅读