我是Python的新手,还在学习。我想知道是否有一个标准的“最佳实践”用于在元组中存储多个键值。这是一个例子:
我有一个名为'red'
的值,其值为3
,我需要将其除以一个数字(比如10)。我需要存储3个值:红色(名称),3(分为10的次数)和1(余数)。还有其他类似的值也需要包含在内,所以这是红色的,但蓝色,绿色等的结果相同(每个标签的数字都不同)。
我读到并且我认为我找到的方式是使用嵌套列表,但我正在为这十亿条记录做这种类型的存储(我需要搜索它,所以我想可能嵌套任何东西可能会减慢我的速度)。
我尝试创建类似{'red':3:1,...}
的内容,但它不是正确的语法,我正在考虑在键值中添加分隔符然后拆分它但不确定它是否有效(例如{'red':3a1,..}
然后用字母a)解析。
我想知道是否有更好的方法存储这个或嵌套元组我唯一的解决方案?我正在使用Python 2。
答案 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)的顺序,则需要创建新元组。而对于列表,您可以简单地重新排列顺序。