将数据存储在元组或字典列表中更好吗?

时间:2013-10-11 18:46:25

标签: python

哪个更好。这样的列表:

list=[['o',5.3,7],['k',5,9.2],...]

或像这样的字典:

dict={'o':[5.3,7],'k':[5,9.2],...}

如果不清楚,我试图将两个十进制数字与字母表中的字母相关联。

每种方法有哪些优点和缺点?

我应该补充一点,对于我的具体应用,我将按字母顺序按字母顺序组织列表或字典。也许列表更容易订购?

3 个答案:

答案 0 :(得分:4)

如果您尝试将某些内容与其他内容相关联,那么字典可能就是您想要的。它更快,而且是工作的正确工具。

使用示例:

dictionary = {'o': (5.3, 7), 'k': (5, 9.2)}        # Don't use dict as a variable name, it's a built-in

print(dictionary['o'])
# (5.3, 7)

print(dictionary['k'][1]))
# 9.2

我已用元组替换了您的列表。这节省了一点内存(假设您不希望将来将不同的数字与字母关联起来。

但是,字典不会保留字母的顺序,但看起来你不需要这样。

虽然如果你需要做的只是检查一个数字是否与一个字母相关联,你可以进一步优化,并使用集合。

dictionary = {'o': {5.3, 7}, 'k': {5, 9.2}}

print(7 in dictionary['o'])
# True

但是,集合不会保留排序。

答案 1 :(得分:1)

迭代列表比词典更容易 和字典不保留排序,所以如果你想按位置轻松编制索引,很明显列表更好。

然而,在你的情况下,使用第一个位置存储列表“id”似乎非常不自然,至少有些我不习惯并且定义不会自己做。

答案 2 :(得分:1)

这取决于您将如何使用数据。如果你关心的只是访问时间,那么只需查阅@hcwhsa的时间复杂性列表。

要记住的另一件事是字典是无序列表,而列表/元组是有序的。这对迭代,序列化等很重要。