我如何知道在Python中使用哪种数据类型?

时间:2009-10-16 18:48:21

标签: python arrays types tuples

我正在学习一些关于Python的教程,并且我正在尝试决定在某种情况下使用什么数据类型/结构。

我不清楚数组,列表,字典和元组之间的区别。

你如何决定哪一个是合适的 - 我目前的理解是不让我区分它们 - 它们似乎是一样的。

每个人有哪些好处/典型用例?

5 个答案:

答案 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)

个人: 正在使用列表和词典。 这似乎满足了大多数情况。

<强>有时: 元组可能会有所帮助 - 如果你想配对/匹配元素。除此之外,我并没有真正使用它。

<强>然而 我编写的高级脚本不需要深入到核心“效率”,每个字节和每个内存/纳秒都很重要。我不相信大多数人需要深入钻探。