python - 使用列表设置初始化 - 两种不同的方法,一种不起作用
问题描述
当我尝试使用以下语句初始化集合时:
myset = {['ki','ni']}
我收到以下错误:
类型错误:不可散列类型:“列表”
但是,我可以使用 set() 函数使用相同的列表初始化集合,如下所示:
myset = set(['ki','ni'])
我知道集合的元素必须是不可变的,因此我在第一种情况下指定的错误可能就是由于这个原因。令人困惑的是,为什么这在使用 set() 函数时有效,而不是在使用花括号 ({}) 大括号直接初始化集合时有效?
解决方案
{['ki','ni']}
表示包含一个元素的集合,['ki','ni']
。这不是集合的有效元素,因此您会收到错误消息。
set(iterable)
表示包含 中所有项目的集合,即,如果您使用 for 循环进行iterable
迭代,您会得到什么。iterable
在这种情况下,它的计算结果为{'ki','ni'}
,一个包含两个字符串的集合。
推荐阅读
- sql - PowerApps:UpdateIf 只更新前 100 条记录(SQL-Datasource)
- api - 无法访问 Maximo API 的文档?
- mediawiki - 使用修订 ID 构建修订对象
- python - 使用 Python 将音频的非语音部分静音/静音(语音活动检测)
- vue.js - 访问 Vue3 全局组件
- matrix - Ada 中的 HowTo 和多维矩阵
- clojure - 当`read-line`返回一个字符串时,为什么`read`返回一个符号
- python - (Django 3.1.6/Python 3.8.7)在字段或字段集中使用命名方法 admin.py 不起作用?
- vuejs2 - 在 Vuetify 中覆盖 application--wrap 类
- python - 将 numpy 扩展到未知数字