我正在阅读一些关于 Python 的教程,并且正处于我试图决定在特定情况下使用什么数据类型/结构的位置。
我不清楚数组、列表、字典和元组之间的区别。
您如何决定哪个是合适的-我目前的理解根本无法区分它们-它们似乎是同一回事。
每种方法的好处/典型用例是什么?
您如何决定使用哪种数据类型?简单的:
你看看哪些是可用的,然后选择一个你想要的。如果没有,你就做一个。
在这种情况下,dict 是一个非常明显的解决方案。
像这样计算元素的最佳类型通常是defaultdict
from collections import defaultdict
s = 'asdhbaklfbdkabhvsdybvailybvdaklybdfklabhdvhba'
d = defaultdict(int)
for c in s:
d[c] += 1
print d['a'] # prints 7
首先是元组。这些是无法修改的类似列表的东西。因为元组的内容不能改变,所以可以将元组用作字典中的键。在我看来,这是对他们最有用的地方。例如,如果您有一个类似的列表,item = ["Ford pickup", 1993, 9995]
并且您想创建一个带有价格的小型内存数据库,您可以尝试以下操作:
ikey = tuple(item[0], item[1])
idata = item[2]
db[ikey] = idata
列表,看起来就像其他编程语言中的数组或向量,通常用于 Python 中相同类型的事物。但是,它们更灵活,因为您可以将不同类型的事物放入同一个列表中。通常,它们是最灵活的数据结构,因为您可以将整个列表放入另一个列表的单个列表元素中,但对于实际数据处理,它们可能不够高效。
a = [1,"fred",7.3]
b = []
b.append(1)
b[0] = "fred"
b.append(a) # now the second element of b is the whole list a
字典的使用通常很像列表,但现在您可以使用任何不可变的东西作为字典的索引。然而,与列表不同的是,字典没有自然顺序,也不能就地排序。当然,您可以创建自己的包含排序列表和字典的类,以使 dict 的行为类似于有序字典。Python Cookbook 网站上有示例。
c = {}
d = ("ford pickup",1993)
c[d] = 9995
当您执行繁重的数据处理并且您不想要列表或字典的装饰时,数组越来越接近位级别。它们不经常在科学应用之外使用。留下这些,直到你确定你需要它们。
列表和字典是 Python 数据存储的真正主力。
你真的需要速度/效率吗?然后用一个纯粹而简单的字典。
个人: 我主要使用列表和字典。似乎这满足了大多数情况。
有时: 元组可能会有所帮助——如果你想配对/匹配元素。除此之外,我并没有真正使用它。
但是: 我编写的高级脚本不需要深入研究每个字节和每个内存/纳秒都很重要的核心“效率”。我不相信大多数人需要钻这么深。