哪个会更好。像这样的列表:
list=[['o',5.3,7],['k',5,9.2],...]
或像这样的字典:
dict={'o':[5.3,7],'k':[5,9.2],...}
如果不清楚,我试图将两个十进制数字与字母表中的一个字母相关联。
每种方法的优缺点是什么?
我应该补充一点,对于我的特定应用程序,我将按字母顺序组织列表或字典。也许列表更容易排序?
哪个会更好。像这样的列表:
list=[['o',5.3,7],['k',5,9.2],...]
或像这样的字典:
dict={'o':[5.3,7],'k':[5,9.2],...}
如果不清楚,我试图将两个十进制数字与字母表中的一个字母相关联。
每种方法的优缺点是什么?
我应该补充一点,对于我的特定应用程序,我将按字母顺序组织列表或字典。也许列表更容易排序?
如果您试图将某些东西与其他东西联系起来,那么字典可能就是您想要的。它速度更快,而且是完成这项工作的正确工具。
示例用法:
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
但是,集合不保留顺序。
迭代列表比字典更容易,而且字典不保留顺序,所以如果你想按位置轻松索引,很明显列表更好。
但是,在您的情况下,使用第一个位置来存储列表“id”似乎很不自然,至少我不习惯并且绝对不会自己做的事情。
这取决于您将如何使用这些数据。如果您只关心访问时间,那么只需查阅@hcwhsa 的时间复杂度列表。
要记住的另一件事是字典是无序列表,而列表/元组是有序的。这对于迭代、序列化等可能很重要。