Python数据结构详解:列表、元组、集合和字典的区别

概述

Python 中的数据结构为我们提供了一种存储和排列易于访问和修改的数据的方法。这些数据结构包括集合。一些最常用的内置集合是列表、集合、元组和字典。

介绍

很难理解Python 中的列表、元组、集合和字典是什么?每个至少使用过一次 Python 的人都对它们之间的差异或何时使用它们感到困惑。好了,不多说了,我们将分解这些数据结构集合的差异并理解它们,以便我们永远不会忘记它们!

让我们仔细看看每个集合是什么:

Python 中列表、元组、集合和字典之间的主要区别

可变性:

  • 列表:可变(可修改)。
  • 元组:不可变(不可修改)。
  • Set:可变,但里面的元素必须是不可变的。
  • 字典:可变;键是不可变的,但值可以改变。
  • 命令:

  • 列表:保持元素的顺序。
  • 元组:维护元素的顺序。
  • 套装:不保证订单。
  • 字典:从 Python 3.7+ 开始,插入顺序被保留。
  • 独特性:

  • 列表:允许重复。
  • 元组:允许重复。
  • 集合:只有独特的元素。
  • 字典:键唯一,值可以重复。
  • 数据结构:

  • 列表:有序集合。
  • 元组:有序集合。
  • 集合:无序集合。
  • 字典:键值对的集合。
  • Python中列表、元组、集合、字典的区别

    参数 列表 元组 集合 字典
    Definition 列表是有序的、可变的元素集合。 元组是有序的、不可变的元素集合。 集合是唯一元素的无序集合。 字典是键值对的无序集合。
    Syntax 语法包括用“,”分隔数据的方括号 [,]。 语法包括用“,”分隔数据的弯括号 ( , )。 语法包括大括号 { , } 以及用 ',' 分隔的数据。 语法包括大括号 { , } 和用 ',' 分隔的键值数据。
    Creation 可以使用 list() 函数或对 [] 进行简单赋值来创建列表。 可以使用 tuple() 函数创建元组。 可以使用 set() 函数创建集合字典。 可以使用 dict() 函数创建字典。
    Empty Data Structure 可以通过l = []创建一个空列表。 可以通过t = ()创建一个空元组。 可以通过s = set()创建一个空集。 可以通过{}创建一个空字典。
    Order 它是一个有序的数据集合。 它也是一个有序的数据集合。 它是无序的数据集合。 Python 版本 3.7 中的有序集合,Python Version=3.6 中的无序集合。
    Duplicate Data 列表中允许重复的数据输入。 元组中允许重复的数据输入。 Set 中的所有元素都是唯一的。 键是唯一的,但两个不同的键可以具有相同的值。
    Indexing 具有从“0”开始的基于整数的索引。 还具有从“0”开始的基于整数的索引。 没有基于索引的机制。 具有基于键的索引,即键标识值。
    Addition 可以使用append()方法添加新项目。 由于是不可变的,因此无法向其中添加新数据。 add() 方法将一个元素添加到集合中。 update() 方法更新特定的键值对。
    Deletion Pop() 方法允许删除元素。 由于不可变,因此无法弹出/删除任何数据。 可以使用 pop() 随机删除元素。 pop(key) 删除指定的键及其值。
    Sorting sort() 方法对元素进行排序。 不可变,因此排序方法不适用。 无序,因此不建议排序。 使用sorted()方法对键进行排序。
    Search index() 返回第一次出现的索引。 index() 返回第一次出现的索引。 无序,因此不适用搜索。 get(key) 根据指定的键返回值。
    Reversing reverse() 方法反转列表。 不可变,因此反向方法不适用。 无序,因此不建议反向。 没有基于整数的索引,因此没有反转。
    Count count() 方法返回出现次数。 count() 方法返回出现次数。 count() 没有为集合定义。 count() 没有为字典定义。

    让我们在以下主题中了解有关列表、元组、集合和字典的更多信息:

    列表

    列表是Python提供的最常用的数据结构之一;它们是可迭代、可变和有序数据的集合。它们可能包含重复的数据。

    当然!以下是针对每个数据结构提取和组织的代码片段,并使用适当的副标题:

    句法

    代码:

    
    
    list1 = [1 , 2, 'abc', 3, 'def']
    list2 = []
    list3 = list((1, 2, 3))
    print(list1)
    print(list2)
    print(list3)
    

    输出:

    
    
    [1, 2, 'abc', 3, 'def']
    []
    [1, 2, 3]
    

    索引

    代码:

    
    
    list1 = [1, 2, "hello", 3]
    print(list1[2])
    

    输出:

    
    
    'hello'
    

    添加新元素

    代码:

    
    
    list1 = ["one", "two", "three"]
    list1.append("four")
    print(list1)
    

    输出:

    
    
    ['one', 'two', 'three', 'four']
    

    删除元素

    代码:

    
    
    list1 = ["one", "two", "three", "four"]
    list1.pop()
    print(list1)
    

    输出:

    
    
    ['one', 'two', 'three']
    

    对元素进行排序

    代码:

    
    
    list1 = [100, 3, 4, 12, 1]
    list1.sort()
    print(list1)
    

    输出:

    
    
    [1, 3, 4, 12, 100]
    

    搜索元素

    代码:

    
    
    list1 = [100, 3, 4, 12, 1]
    # index() returns index for 4 in list1
    print(list1.index(4))
    

    输出:

    
    
    2
    

    反转元件

    代码:

    
    
    list1 = [100, 3, 4, 12, 1]
    list1.reverse()
    print(list1)
    

    输出:

    
    
    [1, 12, 4, 3, 100]
    

    计数元素

    代码:

    
    
    list1 = [1, 2, 3, 6, 2, 2, 2]
    print(list1.count(2))
    

    输出:

    
    
    4
    

    元组

    元组与列表类似。这个集合也有可迭代的、有序的和(可以包含)重复的数据,就像列表一样。但与列表不同的是,元组是不可变的。

    句法

    代码:

    
    
    tuple1 = (1, 2, 'abc', 3, 4)
    tuple2 = ()
    tuple3 = tuple((1, 3, 5, "hello"))
    print(tuple1)
    print(tuple2)
    print(tuple3)
    

    输出:

    
    
    (1, 2, 'abc', 3, 4)
    () 
    (1, 2, 3, 'hello')
    

    索引

    代码:

    
    
    tuple1 = (1, 2, "hello", 3)
    print(tuple1[2])
    

    输出:

    
    
    'hello'
    

    集合是另一种数据结构,它保存无序、可迭代和可变数据的集合。但它只包含独特的元素。

    当然!以下是表的“设置”部分的代码片段,包括语法和搜索元素部分:

    句法

    代码:

    
    
    set1 = {1, 2, 3, 'abc', 6}
    print(set1)
    

    输出:

    
    
    {'abc', 1, 2, 3, 6}
    

    字典

    与所有其他集合类型不同,字典严格包含键值对。

  • 在 Python 版本 < 3.7 中:是无序的数据集合。
  • 在Python v3.1中:引入了一种名为“OrderedDict”的新型字典,类似于Python中的字典;区别在于orderedDict是有序的(顾名思义)
  • 在最新版本的Python,即3.7中:最后,在Python 3.7中,字典现在是键值对的有序集合。现在以插入顺序(即它们插入的顺序)保证顺序。
  • 句法

    代码:

    
    
    dict1 = {"key1": "value1", "key2": "value2"}
    dict2 = {}
    dict3 = dict({1: "one", 2: "two", 3: "three"})
    print(dict1)
    
    print(dict2)
    
    print(dict3)
    
    

    输出:

    
    
    {'key2': 'value2', 'key1': 'value1'}
    {}
    {1: 'one', 2: 'two', 3: 'three'}
    

    索引

    代码:

    
    
    dict1 = {"one": 1, "two": 2, "three": 3}
    print(dict1.keys())
    print(dict1.values())
    print(dict1['two'])
    

    输出:

    
    
    ['three', 'two', 'one']
    [3, 2, 1]
    2
    

    添加新元素

    代码:

    
    
    dict1 = {"India": "IN", "Russia": "RU", "Australia": "AU"}
    dict1.update({"Canada": "CA"})
    print(dict1)
    dict1.pop("Australia")
    print(dict1)
    

    输出:

    
    
    {'Canada': 'CA', 'Australia': 'AU', 'India': 'IN', 'Russia': 'RU'}
    {'Canada': 'CA', 'India': 'IN', 'Russia': 'RU'}
    

    删除元素

    代码:

    
    
    dict1 = {"India": "IN", "Russia": "RU", "Australia": "AU"}
    dict1.pop('Russia')
    print(dict1)
    

    输出:

    
    
    {'Australia': 'AU', 'India': 'IN'}
    

    对元素进行排序

    代码:

    
    
    dict1 = {"India": "IN", "Russia": "RU", "Australia": "AU"}
    print(sorted(dict1))
    

    输出:

    
    
    ['Australia', 'India', 'Russia']
    

    搜索元素

    代码:

    
    
    dict1 = {"India": "IN", "Russia": "RU", "Australia": "AU"}
    print(dict1['Australia'])
    

    输出:

    
    
    AU
    

    如果您想知道orderedDict和dict在 python 3.7 中是否都是有序的。那为什么会有两种实现呢?有什么区别吗?

    我们可以把它留到我们详细讨论字典的时候。但在那之前,我们应该知道字典是什么,以及它们的用途,因为这是永远不会改变的东西。

    集合 VS 特征 可变的 有序的 索引 重复数据
    列表
    元组 𐄂
    𐄂 𐄂 𐄂
    字典 𐄂

    注意:有序集合是指数据结构保留添加数据的顺序,而无序集合中的数据结构不保留这种顺序。

  • 一方面,集合是无序的集合,而另一方面,字典(在python v3.6及之前版本中)可能看起来是有序的,但事实并非如此。它确实保留了添加到其中的键,但同时,无法访问特定整数索引;相反,可以通过密钥进行访问。
  • 每个键在字典中都是唯一的,并且充当索引,因为您可以使用它访问值。但是键在字典中存储的顺序不会被维护,因此是无序的。而python 3.7 的字典和python 3.1中引入的“OrderedDict”是键值数据的有序集合,因为它们维护插入顺序。
  • 让我们更深入地研究这些集合之间的差异:

    字典、列表、集合和元组之间的主要区别

    句法

  • 字典:使用大括号 { } 并用逗号分隔键值对。
  • 列表:使用方括号 [ ] 和逗号分隔的元素。
  • Set:使用大括号 { } 和逗号分隔的元素。
  • 元组:使用括号 () 和逗号分隔的元素。
  • 命令

  • 字典:在 Python 3.7+ 中保持顺序,但在 Python 3.6 中无序。
  • 列表:维持秩序。
  • 集合:无序。
  • 元组:维持顺序。
  • 重复数据

  • 字典:键是唯一的,值可以重复。
  • 列表:允许重复元素。
  • Set:不允许重复元素。
  • 元组:允许重复元素。
  • 索引

  • 字典:基于键的索引。
  • List:从0开始的基于整数的索引。
  • Set:没有基于索引的机制。
  • Tuple:从 0 开始的基于整数的索引。
  • 添加元素

  • 字典:使用键值对。
  • 列表:可以使用append()方法添加新项目。
  • 设置:使用add()方法。
  • 元组:不可变,无法添加新数据。
  • 删除元素

  • 字典:使用pop(key)方法删除指定的键和值。
  • List:使用pop()方法删除元素。
  • Set:使用pop()方法删除元素。
  • 元组:不可变,不能弹出或删除任何数据。
  • 对元素进行排序

  • 字典:可以使用sorted()方法对键进行排序。
  • List:使用sort()方法对元素进行排序。
  • Set:无序,因此排序不适用。
  • 元组:不可变,数据无法排序。
  • 搜索元素

  • Dictionary:使用get(key)方法检索指定键的值。
  • List:使用index()方法搜索并返回第一次出现的索引。
  • Set:无序,因此不适用搜索。
  • Tuple:使用index()方法搜索并返回第一次出现的索引。
  • 反转元件

  • 字典:没有基于整数的索引,因此没有反转。
  • List:使用reverse()方法来反转元素。
  • Set:无序,因此不建议反转。
  • Tuple:不可变,逆向方法不适用。
  • 计数元素

  • 字典: 未为字典定义count() 。
  • List:使用count()方法来计算特定元素的出现次数。
  • 集合: count()没有为集合定义。
  • Tuple:使用count()方法来计算特定元素的出现次数。
  • 结论

  • 列表和元组在可变性方面有所不同,因为列表是可变的,而元组则不然。
  • Set 是python 3.7中唯一的无序集合。
  • 字典在 python 中以键值对的形式存储数据,并且在涉及它们是有序还是无序时仍然存在争议。因为这因 python 的多个版本而异。Python v<=3.6 的字典是无序的,但同时,在python 3.1中引入了orderedDict,最后python 3.7既有orderedDict 也有Dictionary,现在两者都是有序的。
  • 希望这些信息能够更清楚地说明 python 中列表、元组、集合和字典之间的区别。它们服务于哪些用例,并希望它能让您清楚何时使用哪个集合。

    作者:新华

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python数据结构详解:列表、元组、集合和字典的区别

    发表回复