Python集异常

Python集异常,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,当我试图从列表中获取值时,我试图理解集合是如何工作的。 所以当我运行底部的代码时 wordlist = ['hello',1,2,3] wordSet = set(wordlist) 输出为 {3, 1, 2, 'hello'} 或者类似的东西,因为set没有订单。 但我的观点是,当我尝试访问列表的第一个元素时,就像在使用myList[0]的值创建集合时使用它一样 wordlist = ['hello',1,2,3] wordSet = set(wordlist[0]) 我希望输出是 {'

当我试图从列表中获取值时,我试图理解集合是如何工作的。 所以当我运行底部的代码时

wordlist = ['hello',1,2,3]
wordSet = set(wordlist)
输出为

{3, 1, 2, 'hello'}
或者类似的东西,因为set没有订单。 但我的观点是,当我尝试访问列表的第一个元素时,就像在使用myList[0]的值创建集合时使用它一样

wordlist = ['hello',1,2,3]
wordSet = set(wordlist[0])
我希望输出是

{'hello'}
但是相反,我得到了

{'l', 'o', 'h', 'e'}
或者是随机化的风格。 我的观点是,当我将列表直接放在set函数中时,它使用整个列表来创建一个集合,但当我只想使用列表中的第一个元素来创建一个集合时,它会将我的字符串拆分为个字符。
为什么会发生这种情况?

字符串,如
'hello'
是可编辑的
set()
将iterables转换为集合

澄清一下,

set(('1', '1', '2', '3')) == {'1', '2', '3'}
set(['1', '1', '2', '3']) == {'1', '2', '3'}
set('1123') == {'1', '2', '3'}

对对象调用
set
将迭代该对象。字符串是可编辑的,生成单个字符。如果您想要一个只包含
单词列表
的第一个元素的集合,则需要使用只包含该元素的iterable:

set([worldlist[0]])
或者,更直接地说,只需使用大括号:

{worldlist[0]}

令人惊叹的!这就是我要找的。非常感谢。