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

Python 将数据存储在元组列表或字典中更好吗?,python,Python,哪一个更好。类似这样的列表: list=[['o',5.3,7],['k',5,9.2],...] 或者像这样的字典: dict={'o':[5.3,7],'k':[5,9.2],...} 如果不清楚,我试图将两个十进制数字与字母表中的一个字母联系起来 每种方法的优缺点是什么 我应该补充一点,对于我的具体申请,我将按字母顺序组织列表或词典。也许列表更容易排序?如果您试图将某个内容与其他内容关联,那么字典可能就是您想要的。它速度更快,而且是这项工作的合适工具 用法示例: dictionary

哪一个更好。类似这样的列表:

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中的时间复杂性列表即可


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

看看dict和list之间的时间复杂度差异:以什么方式更好?更快?更易于维护?更容易实现?我试图将两个十进制数字与字母表中的一个字母相关联。这听起来像是一个很好的字典用例,从什么样的数据结构符合我的意图更好的观点有什么理由否决吗?不确定,但+1抵消,因为这是一个非常好的答案imho@JoranBeasley谢谢不确定我是否同意,在列表上迭代比在字典上迭代更容易——它们都很容易——它们只是不同而已。因为他们想通过值而不是位置来引用,所以列表是否更好并不明显,所以即使只是因为列表是有序的,也更容易遍历列表。但我同意,重复使用dicts并不困难,但需要更多的输入;最后,我会按照字母顺序来组织这些内容。那么,使用列表更好吗?@BigBoy1337或OrderedDict,或一个类,或按字母顺序排列的单独字母列表,或可能没有这些,你能说一下你想用它做什么吗?a-Z都是用来描述一系列值的变量。第一个数字是最小值,第二个是最大值。我希望这些元组对于a的范围较小,对于b的范围稍大,…,对于z的范围较大。所以我将把它们放在烛台图上,使我看到的小矩形在向上的轨迹上,a=1,b=2,c=3的距离可视化。。。在x轴上