【发布时间】:2017-03-22 15:11:29
【问题描述】:
我在 Excel 电子表格中有一大列公司信息。我需要将公司信息带入我的程序进行处理。
每家公司都有一个独特的标签,用于访问这些公司。我可以使用标签作为键和公司信息作为值来创建字典,例如{label1: company1, label2: company2, ...}。这样做的话,当字典被创建时,它会占用太多的内存。
是否可以创建一个可以像字典一样使用的生成器?
【问题讨论】:
-
@JoshLee:OP 明确声明他希望避免创建字典...
-
您可以使用
__getitem__方法创建一个对象,该方法在您调用mydata[...]时即时查找内容,如果这是您想要的。 -
您需要定义您实际尝试解决的问题。是基于密钥的快速访问这些数据吗?顺序访问?合并具有相同键的记录?数据有多大?内存限制是什么?“消耗太多内存”是什么意思?
-
如果您无法将所有键都放入内存中,另一种选择是使用 sqlite db 或快速 pkl 文件。因为您仍然需要在某处查找数据。但是您可以创建一个生成器,它遍历文件并为每一行返回一个小元组。
-
在内存和速度之间存在不可避免的权衡,字典为您提供(大部分)O(l) 查找但保存在内存中,其他内存效率更高的方法将不那么快速
标签: python dictionary generator