【发布时间】:2012-07-12 01:11:31
【问题描述】:
是否可以在 Python 字典中为每个值分配多个键。一种可能的解决方案是为每个键分配值:
dict = {'k1':'v1', 'k2':'v1', 'k3':'v1', 'k4':'v2'}
但这不是内存效率,因为我的数据文件大于 2 GB。否则,您可以制作字典键的字典:
key_dic = {'k1':'k1', 'k2':'k1', 'k3':'k1', 'k4':'k4'}
dict = {'k1':'v1', 'k4':'v2'}
main_key = key_dict['k2']
value = dict[main_key]
这也非常耗费时间和精力,因为我必须浏览整个字典/文件两次。还有其他简单且内置的 Python 解决方案吗?
注意:我的字典值不是简单的字符串(如问题 'v1'、'v2')而是复杂的对象(包含不同的其他字典/列表等,无法腌制它们)
注意:这个问题看起来类似于How can I use both a key and an index for the same dictionary value?
但我不是在寻找有序/索引字典,而是在寻找除此问题中提到的两个之外的其他有效解决方案(如果有的话)。
【问题讨论】:
-
您不太可能找到比第一个更好的解决方案。只需将多个键放入字典中。为什么这还不够好?
-
正如我所说的,文件非常大,因此多次放置相同的值需要大量内存。
-
python中的值不一定在python中重复,即使使用多个键来引用它们。
-
该值不会占用额外的内存,除非您每次都重新创建它。请参阅@Useless 的答案。
-
@MartijnPieters - 哦我错过了这一点我想我现在应该做更多的测试我记得 i,j=0, 0; id(i)==id(j);真的:)
标签: python python-3.x python-2.7