哪个更好。这样的列表:
list=[['o',5.3,7],['k',5,9.2],...]
或像这样的字典:
dict={'o':[5.3,7],'k':[5,9.2],...}
如果不清楚,我试图将两个十进制数字与字母表中的字母相关联。
每种方法有哪些优点和缺点?
我应该补充一点,对于我的具体应用,我将按字母顺序按字母顺序组织列表或字典。也许列表更容易订购?
答案 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的时间复杂性列表。
要记住的另一件事是字典是无序列表,而列表/元组是有序的。这对迭代,序列化等很重要。