python中表示或的关系_Python中表示M:M关系的有效大dict

我有一个非常大的数据集-数百万条记录-我想在Python中存储。我可能在32位计算机上运行,所以我希望将数据集保持在几百MB的范围内,并且不要膨胀得比这大得多。在

这些记录-表示M:M关系-两个id(foo和bar)和一些简单的元数据,比如时间戳(baz)。在

有些酒吧里几乎全是酒吧,有些酒吧几乎全是酒吧。但是有很多酒吧几乎没有酒吧,很多酒吧几乎没有酒吧。在

如果这是一个关系数据库,M:M关系将被建模为具有复合键的表。当然,您可以轻松地单独搜索任意一个组件键。在

但是,如果将行存储在哈希表中,则需要维护三个哈希表,因为复合键是散列的,并且不能用它搜索组件键。在

如果您有某种排序索引,您可以滥用词法排序来迭代复合键中的第一个键,并需要另一个键的第二个索引;但我不太清楚标准Python集合中的实际数据结构是什么。在

我考虑的是foo的dict,其中每个值根据某些阈值自动从tuple(单行)移动到list(行tuples)以dict,以及另一个bar dict,其中每个值都是一个foo,或者一个foo列表。在

有没有更高效的速度和空间效率的方法来做到这一点?指数什么的?

(我想将它们存储在Python中,因为我在数据库(SQL和NoSQL变体)上都有性能问题。你最终被IPC memcpy和序列化绑定。这是另一个故事;但是关键是我希望将数据移动到应用程序中,而不是获得将其移出应用程序的建议;)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值