假设我有一本字典dic = {k: v}
。我的目标是创建另一个数据结构,该结构将指向在单个键下访问的字典的子集。
例如:dic = {1: 'a', 2: 'b', 3: 'c', 4: 'f'}
。
我想要一个仅指向密钥1
和3
的指针,但是可以在单个密钥'k1'
下检索,并且可以检索到密钥2
和4
在单个键'k2'
下,无需进行硬拷贝。我的数据在整个申请过程中都不会改变。
我知道我可以创建另一个字典subdic = {'k1': (a, c), 'k2': (b, f)}
,但这需要额外的内存,对吧?
我怎么能只用某种指针做到这一点?使用软拷贝,使得值仅在原始字典dic
的内存中一次。
答案 0 :(得分:2)
您可以像这样创建第二个字典
dic2 = {'k1': (dic[1], dic[3])}
这样做,实际上并没有使用额外的内存(只是边缘),因为元组中的对象与原始dic
中的对象相同(它们在内存中占用相同的空间)。您可以通过执行以下操作来检查它是否为真:
id(dic2['k1'][0]) == id(dic[1]) # True