我正在学习一些关于Python的教程,并且我正在尝试决定在某种情况下使用什么数据类型/结构。
我不清楚数组,列表,字典和元组之间的区别。
你如何决定哪一个是合适的 - 我目前的理解是不让我区分它们 - 它们似乎是一样的。
每个人有哪些好处/典型用例?
答案 0 :(得分:6)
您如何决定使用哪种数据类型?易:
你看哪些可用,并选择一个你想要的。如果没有,你就做一个。
在这种情况下,dict是一个非常明显的解决方案。
答案 1 :(得分:3)
计算此类元素的最佳类型通常为defaultdict
from collections import defaultdict
s = 'asdhbaklfbdkabhvsdybvailybvdaklybdfklabhdvhba'
d = defaultdict(int)
for c in s:
d[c] += 1
print d['a'] # prints 7
答案 2 :(得分:3)
首先是元组。这些是类似列表的东西,无法修改。因为元组的内容不能更改,所以可以使用元组作为字典中的键。在我看来,这对他们来说是最有用的地方。例如,如果您有一个像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
当您进行重型数据处理并且不想要列表或词典的多余部分时,阵列越来越接近位级别。它们通常不在科学应用之外使用。留下这些,直到你确定你需要它们为止。
Lists和Dicts是Python数据存储的真正主力。
答案 3 :(得分:0)
你真的需要速度/效率吗?然后选择一个纯粹而简单的词典。
答案 4 :(得分:0)
个人: 我正在使用列表和词典。 这似乎满足了大多数情况。
<强>有时:强> 元组可能会有所帮助 - 如果你想配对/匹配元素。除此之外,我并没有真正使用它。
<强>然而强> 我编写的高级脚本不需要深入到核心“效率”,每个字节和每个内存/纳秒都很重要。我不相信大多数人需要深入钻探。