什么是Python中的集合以及如何创建一个集合

Python set是唯一的文字,用于过滤列表或项目数组中的不同值。与Python列表,字典或元组不同,它不接受重复项。因此,它可以成为有价值的数据清理工具。

但是,如何创建集合并在Python中使用它呢?我们将在这篇文章中对此进行解释。

Python集的功能

集合文字除了不接受重复项外,还具有使其与其他数据类型区分开的其他特征。以下是其一些功能:

  • 它是不可变的:这意味着一旦创建一个集就无法更改其值。
  • 每次创建集合文字时,它都会返回动态排列。本质上,集合中的项目是无序的。
  • 因为它显示无序项目,与列表和字典文字不同,所以无法通过它们的索引来获取集合的值。

如何创建和使用Python集

现在,您已经了解了Python集的基本功能。让我们看看在程序中使用它的一些方法。

您可以使用花括号在Python中创建一个集合。因此,一组是用逗号分隔的大括号中的项目的列表:

 mySet = {1, 2, "MUO", "Google"}
print(mySet)
Output: {1, 2, "MUO", "Google"}

您还可以将任何其他数据类型转换为集合。例如,下面的代码将列表转换为集合:

 myList = [1, 2, "MUO", "Google"]
mySet = set(myList)
print(mySet)
Output: {1, 2, "MUO", "Google"}

可以肯定的是,您可以检查mySet的数据类型:

 myList = [1, 2, "MUO", "Google"]
mySet = set(myList)
print(type(mySet))
Output: <class 'set'>

就像我们前面提到的,集合不接受重复项。当您要通过删除重复值来清理数组时,该功能很有用。

下面的代码删除列表中的重复项,并将输出显示为Python集:

 myList = [1, 2, 2 "MUO", "MUO", "Google", "Google"]
mySet = set(myList)
print(mySet)
Output: {1, 2, 'MUO', 'Google'}

为了进一步展示集合的过滤功能,在打印集合的长度时,它不计算重复值:

 mySet = {1, 2, 2, "MUO", "MUO", "Google", "Google"}
print(len(mySet))
Output: 4

要查看一组更好的用例,让我们删除以下数组中的重复项。就像查询数组中的唯一键一样。

为此,请将字典转换为集合:

 myDiction = {
"Mango":2, "Orange":2, "carrot":2, "MUO":"tech",
"MUO":"web", "Google":"search", "Google":"engine"
}
uniqueSet = set(myDiction)
print("These are the unique keys: {}".format(uniqueSet))
Output: These are the unique keys: {'Google', 'Mango', 'MUO', 'Orange', 'carrot'}

上面的转换会自动从数组中删除重复的项。

您可以使用for循环修改上面的代码,以使其更清晰:

 for uniques in uniqueSet:
print(uniques)

您还可以使用union()方法将两个集合连接起来:

 setA = {1, 3, 5}
setB = {1, 4, 6}
newSet = setA.union(setB)
print(newSet)
Output: {1, 3, 4, 5, 6}

但是,上面的代码将这两个集合结合在一起,并删除了重复的值。

或者,您可以使用管道|在Python中加入集合的函数:

 setA = {1, 3, 5}
setB = {1, 4, 6}
newSet = setA|setB
print(newSet)
Output: {1, 3, 4, 5, 6}

您还可以在Python中找到两个集合之间的区别:

 setA = {1, 3, 5}
setB = {2, 4, 5,}
print(setA.difference(setB))
Output: {1, 3}

您可以找到集合A和B之间的对称差异。此方法返回两个集合中的项目,但排除它们的相交。让我们看看它是如何工作的:

 setA = {1, 3, 5}
setB = {2, 4, 5,}
print(setA^setB)
Output: {1, 2, 3, 4}

另外,您可以使用symmetric_difference()方法:

 setA = {1, 3, 5}
setB = {2, 4, 5,}
print(setA.symmetric_difference(setB))
Output: {1, 2, 3, 4}

我们还要看看如何在下面找到集合的交集:

 setA = {1, 3, 5}
setB = {1, 4, 6}
setC = {1, 5, 4}
newSet = setA.intersection(setB, setC)
print(newSet)
Output: {1}

尽管可以在Python中追加到列表,但是您不能对Python集执行相同的操作。但是,您可以使用添加功能将项目添加到集合的末尾。

但是Python的add函数接受一个参数,因此您只能将一个元组添加到集合中。这将返回一个嵌套集:

 setA = {1, 3, 5}setC = {1, 3}
newSet = 1, 6
setC.add(newSet)
print(setC)
Output: {1, (1, 6), 3}

Python集使用isdisjoint()方法检查两个集是否不相交。然后,它返回一个布尔值:

 setA = {1, 3, 5}
setB = {1, 4, 6}
findDisjoint = setA.isdisjoint(setB)
print("It's {} that setA is a disjoint of B".format(findDisjoint))
Output: It's False that setA is a disjoint of B

要检查一个集合是否是另一个集合的子集,请将isdisjoint()替换为issubset()

 findSubset = setA.issubset(setB)

您可以从集合中删除一个元素:

 setA = {1, 3, 5}
setA.remove(5)
print(setA)
Output: {1, 3}

clear()方法清除集合中的元素并返回一个空集合:

 setA = {1, 3, 5}
setA.clear()
print(setA)
Output: set()

您可以从集合中删除任意项目,并使用set.pop()方法返回其值:

 setA = {1, 3, 5}
print(setA.pop())

您还可以使用update()方法更新Python集:

 setA = {1, 'b'}
setB = {2, 4, 5,}
print(setA.update(setB))
print(setA)
Output: {1, 2, 4, 5, 'b'}

玩转Python集

尽管我们已经了解了如何在Python中使用集合,但是还有其他实用的方法可以在代码中应用它。如您所见,在使用Python清理数据时,它甚至可以派上用场。

除了集合外,其他Python数据类型或数组还有许多用途和各种应用程序。尝试与他们一起玩耍,以更好地发挥他们的作用。