Python合并列表以维护外部引用

时间:2016-12-05 21:30:33

标签: python dictionary

我不确定这在Python中是否可行,但我的应用程序的性能至关重要,我有以下情况。

我正在尝试使用以下实现合并两个不相交的集合。我有一个排序列表的字典,其中字典中的键指向保存值的排序列表(通过引用)。喜欢这个

l1 = [1, 2, 3]
l2 = [4, 5, 6]

d = {1: l1, 2: l1, 3: l1, 4: l2, 5: l2, 6: l2}

现在我想合并两个列表,使字典中的每个键引用相同的基础列表,如

l1 = l2 = l1 + l2

但这不会影响字典中的引用,因为会创建一个新列表。

速度在这里至关重要,因此我不想创建新列表并重新分配对字典中每个键的引用。

修改

我希望在此操作之后运行以下代码时不会出现断言错误

for v in d:
    assert d[v] is l1

1 个答案:

答案 0 :(得分:2)

引用的工作类似于指针:每个引用唯一地标识一个对象,并且只有它。因此,您的词典元素所包含的l1l2不同的引用。

因此,如果不实际编辑字典,你就不能神奇地使它们相同。

您所能做的就是让l1l2保持相同的价值。

相关问题