什么时候应该使用字典、列表或集合?
是否存在更适合每种数据类型的场景?
什么时候应该使用字典、列表或集合?
是否存在更适合每种数据类型的场景?
当前回答
当您有一组映射到值的唯一键时,请使用字典。 如果你有一个有序的项目集合,可以使用列表。 使用集合存储一组无序的项。
其他回答
对于c++,我总是在脑海中有这样的流程图:在哪个场景中使用特定的STL容器?,所以我很好奇Python3中是否也有类似的东西,但我运气不好。
对于Python,你需要记住的是:Python没有像c++那样单一的标准。因此,不同的Python解释器(例如CPython, PyPy)可能存在巨大的差异。下面是CPython的流程图。
此外,我发现没有好办法将以下数据结构合并到图表中:字节、字节数组、元组、named_tuples、ChainMap、计数器和数组。
OrderedDict和deque可以通过collections模块获得。 Heapq可以从Heapq模块获得 LifoQueue、Queue和PriorityQueue可以通过Queue模块使用,Queue模块是为并发(线程)访问而设计的。(还有一个多处理。队列可用,但我不知道与队列的区别。队列,但假定它应该在需要从进程进行并发访问时使用。) Dict, set, frozen_set和list当然是内置的
对于任何人,如果你能改进这个答案,并在每个方面提供一个更好的图表,我将非常感激。请随意,欢迎光临。
PS:图是用yed做的。graphml文件在这里
字典:当你想用索引以外的东西来查找某个东西时。例子:
dictionary_of_transport = {
"cars": 8,
"boats": 2,
"planes": 0
}
print("I have the following amount of planes:")
print(dictionary_of_transport["planes"])
#Output: 0
列表和集:当您想要添加和删除值时。 列表:使用索引查找值 集:存储值,但不能使用任何方法访问它们。
虽然这里不包括集合,但它很好地解释了字典和列表:
Lists are what they seem - a list of values. Each one of them is numbered, starting from zero - the first one is numbered zero, the second 1, the third 2, etc. You can remove values from the list, and add new values to the end. Example: Your many cats' names. Dictionaries are similar to what their name suggests - a dictionary. In a dictionary, you have an 'index' of words, and for each of them a definition. In python, the word is called a 'key', and the definition a 'value'. The values in a dictionary aren't numbered - tare similar to what their name suggests - a dictionary. In a dictionary, you have an 'index' of words, and for each of them a definition. The values in a dictionary aren't numbered - they aren't in any specific order, either - the key does the same thing. You can add, remove, and modify the values in dictionaries. Example: telephone book.
http://www.sthurlow.com/python/lesson06/
就OP问的问题而言,可能跑题了-
List:有序、可变对象的不可分解集合。 元组:有序的、不可变对象的可哈希集合,如 列表。 Set:一个不可哈希的无序、可变和不同的集合 对象。 Frozenset:无序、不可变和的可哈希集合 不同的对象。 字典:可变对象的不可哈希的无序集合 将哈希值映射到任意值。
要从视觉上比较它们,一目了然,请看图-
你只是需要一个有序的项目序列吗?列个清单。 您是否只需要知道您是否已经获得了一个特定的值,但不需要进行排序(并且您不需要存储副本)?使用一个集合。 您是否需要将值与键相关联,以便稍后可以有效地(按键)查找它们?使用字典。