-1

哪个会更好。像这样的列表:

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

或像这样的字典:

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

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

每种方法的优缺点是什么?

我应该补充一点,对于我的特定应用程序,我将按字母顺序组织列表或字典。也许列表更容易排序?

4

3 回答 3

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

但是,集合不保留顺序。

于 2013-10-11T18:50:45.387 回答
1

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

但是,在您的情况下,使用第一个位置来存储列表“id”似乎很不自然,至少我不习惯并且绝对不会自己做的事情。

于 2013-10-11T18:54:47.123 回答
1

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

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

于 2013-10-11T18:55:40.597 回答