Python:如何在列表和字典之间创建公共元素

时间:2016-01-22 23:31:23

标签: python

我是python中数据结构的新手,想知道如何在python中模拟像指针这样的东西,以便多个结构可以引用和管理同一条数据。

我有以下两种结构

my_list = [1]
my_dictionary = {}
my_dictionary["hello"] = my_list[0]

当我执行以下操作时,我得到了真正的

 id(my_dictionary["hello"]) == my_list[0]

但是我如何一次强制从字典和列表中删除? 如果我执行以下操作,my_dictionary仍然会引用my_list [0],即1

del my_list[0]

有没有办法一次性摆脱这两个元素?像这样做链接结构的python方法是什么?

4 个答案:

答案 0 :(得分:2)

这实际上取决于您尝试通过交叉引用解决的问题。

假设您的意图是能够有效地按键定位项目,以及按顺序按顺序迭代。在这种情况下,无论语言如何,您可能希望避免交叉引用散列表和数组数据结构,因为更新本质上是线性的。相反,交叉引用散列表和列表可能更有意义。

为此,您可以使用dictionary

之类的内容
 d = {}
 l = llist.dllist()

 # insert 'foo' and obtain the link
 lnk = l.append('foo')
 # insert the link to the dictionary
 d['foo'] = lnk

相反,假设您的意图是能够有效地按键定位项目,以及按索引定位。然后你可以使用dict和list,并在每次修改dict时重建列表。花哨的交叉引用没有真正的理由。

答案 1 :(得分:0)

简单地说,没有办法轻松链接你的两个结构。

你可以操纵你指向的对象,以便它有一些"删除"状态并且将被删除(当在两个容器中时)。

但是,如果你想要的只是list中的dict,请使用list(the_dict.values())

如果其他所有方法都失败了,您可以创建一个类来实现此目的。有关您的课程必须具备的详细信息,请参阅https://docs.python.org/2/reference/datamodel.html#emulating-container-types。在课堂上,您将获得重复的工作,"但如果它正确实施,它就不容易出错。

答案 2 :(得分:-1)

您可以随时执行以下操作:

Pointers in Python?

(快速stackoverflow搜索显示一些结果)

不仅仅是数据结构。 请记住,Python为您管理内存(在大多数情况下,非常好),因此您不必担心自己清理。

答案 3 :(得分:-1)

我已经尝试了以下代码,它可以工作(在另一个DataStructure中更改)。 这有帮助吗?

list1 = [1,2,3]
list2 = [4,5,6]

my_dictionary = {}
my_dictionary["a"] = list1
my_dictionary["b"] = list2

del list1[0]
print list1
print list2
print my_dictionary