Python Set – 解决 TypeError: ‘set’ object is not subscriptable

Python 中的集合是独特的数据类型。除了列表、元组和字典之外,集合是最知名和最受追捧的数据存储变量之一。与列表不同,集合不能进行切片或索引,因此它们的处理速度比其他数据类型更快。

当运算符和操作数之间不匹配时,Python 中就会出现类型错误。例如,如果您尝试使用索引搜索集合中的元素,解释器将引发类型错误,因为 Python 中的集合无法建立索引。

我们将了解 Python 中的集合以及类型错误如何与它们关联。我们还将讨论可能的修复,以便您将来使用集合时可以避免类型错误。让我们开始吧!

理解 Python 中的集合:独特的数据存储结构

集合是 Python 中一种独特的数据存储结构类型。数学中的集合指的是有组织的元素或数字的集合。在数学和 Python 中,集合都用大括号 {} 表示。

在编程中,集合是用于存储多个元素或对象的最著名的数据类型之一。在Python中,它是四种主要的数据存储变量类型之一。

成熟的集合是不可变的,也就是说,它们是不可改变的。它们也是无序的,这意味着它们无法索引,因此无法通过其位置访问集合中的各个元素。

可以使用特定的内置函数将新元素添加到现有集合中,也可以从集合中删除现有元素。就像将元素附加到列表中一样,集合会在现有对象的末尾添加新元素,因为它们是无序的。

集合中的元素可以通过它们的值来引用。重复是集合中的一大“禁忌”。集合中不存在重复元素。如果两个对象被赋予相同的值,则只有按从左到右顺序第一个出现的对象才会被视为集合的元素,并且重复的将被忽略。

Example of a set is:
Our_set={'apples','bananas','oranges'}

除了使用花括号来描述集合之外,Python 还支持 set() 构造函数。您可以使用此构造函数创建数据类型并将其显式转换为集合。

len() 函数可用于确定 Python 中集合的长度或大小。

在下面给出的示例中,我们首先使用 add() 函数将一个新元素添加到包含数字的first_set 中。在第二个集合中,我们使用remove()函数从集合中删除了最后一个元素。这是两个最重要的集合函数。

除了这两个函数之外,我们还演示了 len() 函数如何处理集合。

#defining sets
first_set={1,2,3,4}
print("orginal first set=",first_set)
#using add() function
first_set.add(5)
print("modified first set=",first_set)
second_set={"apple",'banana','orange','pears'}
print("Original Second set=",second_set)
#using remove() function
second_set.remove('orange')
print("modified second set=",second_set)
#determining sizes of the first and second sets using the len() function
print("The lengths of the first_set and the second_set are: "+str(len(first_set))+" and "+str(len(second_set))+" respectively.")

输出将是:

orginal first set= {1, 2, 3, 4}
modified first set= {1, 2, 3, 4, 5}
Original Second set= {'apple', 'banana', 'orange', 'pears'}
modified second set= {'apple', 'banana', 'pears'}
The lengths of the first_set and the second_set are: 5 and 3 respectively.
探索 Python 集合及其函数

请参阅官方文档,了解有关 Python 中不同数据类型的更多信息。

修复 TypeError:“set”对象在 Python 中不可下标

当您尝试对集合中的元素进行索引时,您会遇到 Python 中的类型错误。当解释器无法弄清楚需要对特定操作或函数的特定类型输入执行什么操作时,Python 中的类型错误很常见,因为它们与所需的类型不匹配。

可下标意味着占据数据类型中的特定位置或索引。与列表不同,集合是无序的,这意味着没有特定元素具有固定位置,因此无法通过其地址访问它们。

有很多方法可以帮助我们修复这个错误。下面给出了其中一些。

方法一:改变变量的数据类型

如果需要使用位置或索引访问特定元素,只需使用 list() 构造函数将集合转换为列表即可。

执行完所需的操作(例如附加或更改元素的位置)后,如果需要,可以将列表转换回集合。

#our set
set1={1,2,3,4,5}
#converting the set to list
L=list(set1)
#converting the list back to a set after printing the first element using index.
print("The first element of our original set is=",L[0])
print("After conversion=",L)
print("Before conversion=",set1)

上述代码的输出将是:

The first element of our original set is= 1
After conversion= [1, 2, 3, 4, 5]
Before conversion= {1, 2, 3, 4, 5}
Python 集合和列表之间的切换:实用指南

类似:[已解决]类型错误:Python 中的“无法将字节连接到 str”。

方法 2:使用 ‘in’ 语句

要检查某个元素是否存在于集合中,我们可以使用“in”语句以及该特定元素的值来使我们的生活更轻松,而不是使用索引。

下面给出的代码演示了我们如何实现此方法。

#our set
set1={1,2,3,4,5}
#checking if an element is in set1 using their values
#using the in statement in addition to if
if 2 in set1:
  print("yes!")
else:
  print("No")

该程序的输出是:

yes!

请查看:[已解决] Python 中的“意外关键字参数”类型错误。

总结:Python 集和 TypeError

在本教程中,我们介绍了 Python 集是什么以及它们如何是不可变的和无序的。它们不能像列表一样被索引,列表是有序的并且可以通过它们的位置来引用。这可能会引发称为类型错误的异常,因为不支持索引或切片。

有几种方法可以绕过此错误,并通过将集合的元素转换为其他数据类型来索引该集合的元素。你认为为什么即使有列表,人们仍然使用集合?