我有来自不同来源的一些信息。输入采用键值对形式。键是'a.b.c‘型的。来自不同来源的键可以是相同的,在这种情况下,我必须做一组所有的值。
我需要用数据结构来做的事情:
我想要一个或多个空间高效的数据结构来实现这一点。我最初想保留两个映射:一个用于源id和键,另一个用于键和值。但是在这里,我失去了源id,而不是值映射。
速度/空间要求:获取每个键的值列表的速度很重要;维护这些数据结构所需的内存也是如此。构建此数据结构和源id到键/值检索速度所需的时间并不重要。
有什么建议吗?
发布于 2013-04-04 00:47:39
您可以稍微修改一下您的想法:将一个字典与(key,value)对相关联,另一个将键与一组值相关联。这应该是快速构建/更新的(添加一个条目需要两个dict查找和一个list/set插入),并且不需要太多的内存开销。然后,您想要的两个查找操作中的每一个只需要一个字典命中。
请注意,这只会使指向实际数据的指针数量增加一倍;如果值很大,则内存使用量将大大减少一倍。但是,如果这是一个问题,并且您不介意将源id设置为键值查找要慢得多,那么您只能存储从键到(源,值)对的字典。然后,您可以通过以下方法获得给定密钥的所有值
vals_for_key = [val for source, val in the_dict[key]]
和来自给定源的键值对
keyvals_for_source = [(key, val)
for key, items in the_dict.iteritems()
for src, val in items
if src == source]
https://stackoverflow.com/questions/15800554
复制相似问题