2016-07-26 97 views
-1

假设我有一本词典dic = {k: v}。我的目标是创建另一个数据结构,指向一个字典的一个子集,在一个密钥下访问。指向Python中另一个词典的词典

例如:dic = {1: 'a', 2: 'b', 3: 'c', 4: 'f'}。 我想只有钥匙13,例如下一个键'k1'下一个键'k2'一个指针,但检索,并键24检索,而不需要做一个硬拷贝。我的数据在整个应用程序中不会改变。

我知道我可以创建另一个字典subdic = {'k1': (a, c), 'k2': (b, f)},但那需要额外的内存,对吧? 我怎样才能做到这一点只有某种指针?使用软拷贝,使得原始字典dic中的值仅在内存中存在一次。

+3

你可以给出一个非散文(即代码)的例子,你将如何访问这个和输出应该是什么?也许你是如何创造它的。我没有按照你的标记。 –

+0

我认为这很清楚。你没有得到什么?字典创建? – curious

+2

嗯......你在Python的问题中询问如何制作一个指针,它是C(和相关的)而不是Python,以及关于需要额外内存的另一个字典的东西......好吧,指针也需要额外的内存...你想要什么样的(Python)对象,你期望它如何表现?你的问题的愚蠢答案是,如果你想使用指针的某种多字典,你必须编写自己的C扩展。 –

回答

2

您可以创建第二个字典这样

dic2 = {'k1': (dic[1], dic[3])} 

这样做,你不实际使用额外的内存(只能勉强),因为在元组对象是一样的人在原始dic (它们在内存中占据相同的空间)。你可以通过这样做检查它是否为真:

id(dic2['k1'][0]) == id(dic[1]) # True