Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,何时使用字典、列表或集合?_Python_List_Dictionary_Data Structures_Set - Fatal编程技术网

在Python中,何时使用字典、列表或集合?

在Python中,何时使用字典、列表或集合?,python,list,dictionary,data-structures,set,Python,List,Dictionary,Data Structures,Set,我应该什么时候使用字典、列表或集合 是否有更适合每种数据类型的方案? 你只需要一个有序的项目序列吗?去拿清单 您是否只需要知道是否已经获得了特定的值,但不需要排序(并且不需要存储重复项)?使用一套 您是否需要将值与键关联,以便以后可以高效地(按键)查找它们?使用字典 当您需要唯一元素的无序集合时,请使用集合。(例如,当您需要文档中使用的所有单词的集合时) 如果要收集元素的不可变有序列表,请使用元组。(例如,当您希望将(姓名、电话号码)对用作集合中的元素时,您需要一个元组而不是列表,因为集合要求元

我应该什么时候使用字典、列表或集合

是否有更适合每种数据类型的方案?

  • 你只需要一个有序的项目序列吗?去拿清单
  • 您是否只需要知道是否已经获得了特定的值,但不需要排序(并且不需要存储重复项)?使用一套
  • 您是否需要将值与键关联,以便以后可以高效地(按键)查找它们?使用字典

当您需要唯一元素的无序集合时,请使用
集合。(例如,当您需要文档中使用的所有单词的集合时)

如果要收集元素的不可变有序列表,请使用
元组。(例如,当您希望将(姓名、电话号码)对用作集合中的元素时,您需要一个元组而不是列表,因为集合要求元素是不可变的)

当您想要收集可变的元素有序列表时,请使用
列表
。(例如,当您想在列表中添加新电话号码时:[number1,number2,…])

如果需要从键到值的映射,请使用
dict
。(例如,当您想要一本将姓名映射到电话号码的电话簿时:
{'John Smith':'555-1212'}
)。注意,dict中的键是无序的。(如果您反复阅读dict(电话簿),按键(姓名)可能会以任何顺序出现)。

  • 当您有一组映射到值的唯一键时,请使用字典

  • 如果您有有序的项目集合,请使用列表

  • 使用集合存储无序的项目集合


  • A
    list
    保持秩序,
    dict
    set
    不要:当你关心秩序时,你必须使用
    list
    (当然,如果你选择的容器仅限于这三种;-)

    dict
    将每个键与一个值相关联,而
    list
    set
    只包含值:显然,使用情况非常不同

    set
    要求项目可散列,
    list
    不要求:因此,如果您有不可散列的项目,则不能使用
    set
    ,而必须使用
    list

    set
    禁止重复,而
    list
    则不允许重复:这也是一个重要的区别。(可以在
    集合中找到一个“multiset”,它将重复项映射到多次出现的项的不同计数中。Counter
    ——如果出于某种奇怪的原因无法导入
    集合,或者在2.7之前的Python中无法导入
    集合,则可以将其构建为
    dict
    。defaultdict(int)
    ,使用项目作为键,关联值作为计数)


    检查
    集合
    (或
    dict
    ,用于键)中的值的成员身份非常快(大约需要一个恒定的、短的时间),而在列表中,在平均和最坏的情况下,它需要与列表长度成比例的时间。因此,如果您有可散列项,不关心顺序或重复项,并且希望快速检查成员资格,
    set
    优于
    list
    虽然这不包括
    set
    s,但它是对
    dict
    s和
    list
    s的一个很好的解释:

    列表就是它们看起来的样子——一个值列表。他们每个人都是 编号,从零开始-第一个编号为零 第二个1、第三个2等。您可以从列表中删除值,然后 在末尾添加新值。你的许多猫的名字

    字典与它们的名字相似——字典。 在字典中,你有一个单词的“索引”,每个单词都有一个索引 定义。在python中,这个词被称为“键”,定义 “价值”。字典中的值没有编号-皮重相似 顾名思义,就是一本字典。在字典里,你有 单词的“索引”,以及每个单词的定义。中的值 字典没有编号-它们没有任何特定的顺序, 或者-钥匙做同样的事情。您可以添加、删除和修改 字典中的值。示例:电话簿


    列表看起来就是一个价值列表。它们中的每一个都从零开始编号-第一个编号为零,第二个编号为1,第三个编号为2,等等。您可以从列表中删除值,并在末尾添加新值。你的许多猫的名字

    元组类似于列表,但不能更改其值。您首先放弃的值是您在程序的其余部分中一直坚持的值。同样,为了便于参考,每个值都从零开始编号。示例:一年中月份的名称


    字典与它们的名字类似——字典。在字典中,你有一个单词的“索引”,每个单词都有一个定义。在python中,这个词称为“键”,定义称为“值”。字典中的值没有编号——与它们的名称相似——字典。在字典中,你有一个单词的“索引”,每个单词都有一个定义。在python中,这个词称为“键”,定义称为“值”。字典中的值没有编号-它们也没有任何特定的顺序-键做同样的事情。您可以在字典中添加、删除和修改值。示例:电话簿。

    使用它们时,我会制作一份详尽的方法备忘单,供您参考:

    class ContainerMethods:
        def __init__(self):
            self.list_methods_11 = {
                        'Add':{'append','extend','insert'},
                        'Subtract':{'pop','remove'},
                        'Sort':{'reverse', 'sort'},
                        'Search':{'count', 'index'},
                        'Entire':{'clear','copy'},
                                }
            self.tuple_methods_2 = {'Search':'count','index'}
    
            self.dict_methods_11 = {
                        'Views':{'keys', 'values', 'items'},
                        'Add':{'update'},
                        'Subtract':{'pop', 'popitem',},
                        'Extract':{'get','setdefault',},
                        'Entire':{ 'clear', 'copy','fromkeys'},
                                }
            self.set_methods_17 ={
                        'Add':{['add', 'update'],['difference_update','symmetric_difference_update','intersection_update']},
                        'Subtract':{'pop', 'remove','discard'},
                        'Relation':{'isdisjoint', 'issubset', 'issuperset'},
                        'operation':{'union' 'intersection','difference', 'symmetric_difference'}
                        'Entire':{'clear', 'copy'}}
    
    结合列表、dict和set,还有另一个有趣的python对象

    有序词典与常规词典一样,但它们记住插入项的顺序。当在一个有序字典上迭代时,这些项将按照它们的键第一次添加的顺序返回

    订购的