使用python在元组中存储多个键值?

时间:2011-09-20 06:35:51

标签: python

我是Python的新手,还在学习。我想知道是否有一个标准的“最佳实践”用于在元组中存储多个键值。这是一个例子:

我有一个名为'red'的值,其值为3,我需要将其除以一个数字(比如10)。我需要存储3个值:红色(名称),3(分为10的次数)和1(余数)。还有其他类似的值也需要包含在内,所以这是红色的,但蓝色,绿色等的结果相同(每个标签的数字都不同)。

我读到并且我认为我找到的方式是使用嵌套列表,但我正在为这十亿条记录做这种类型的存储(我需要搜索它,所以我想可能嵌套任何东西可能会减慢我的速度)。

我尝试创建类似{'red':3:1,...}的内容,但它不是正确的语法,我正在考虑在键值中添加分隔符然后拆分它但不确定它是否有效(例如{'red':3a1,..}然后用字母a)解析。

我想知道是否有更好的方法存储这个或嵌套元组我唯一的解决方案?我正在使用Python 2。

3 个答案:

答案 0 :(得分:3)

元组的语法是:(a,b,c)

如果您想要一个包含多个值的字典,您可以将一个列表作为值:{'red':[3,1]}

您可能还想考虑named tuples,甚至是课程。这将允许您命名字段而不是通过索引访问它们,这将使代码更清晰和结构化。

  

我读到并且我认为我找到的方式是使用嵌套列表,但我正在为这十亿条记录做这种类型的存储(我需要搜索它,所以我想可能嵌套任何东西可能会减慢我的速度)。

如果您有十亿条记录,则可能应该保留数据(例如在数据库中)。如果您尝试将所有数据保存在内存中,则可能会耗尽内存。

答案 1 :(得分:1)

使用元组。例如:

`('red', 3, 1)`

答案 2 :(得分:0)

也许你的意思是字典而不是元组?

{'red': [3,1], 'blue': [2,2]}

如果您尝试存储键/值对,最好的方法是将它们存储在字典中。如果每个键需要多个值,只需将这些值放在列表中即可。

我认为你不想将这些东西存储在一个元组中,因为元组不可变。因此,如果您决定更改商和余数(1,3)而不是(3,1)的顺序,则需要创建新元组。而对于列表,您可以简单地重新排列顺序。