我不确定这在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
答案 0 :(得分:2)
引用的工作类似于指针:每个引用唯一地标识一个对象,并且只有它。因此,您的词典元素所包含的l1
和l2
是不同的引用。
因此,如果不实际编辑字典,你就不能神奇地使它们相同。
您所能做的就是让l1
和l2
保持相同的价值。