我正在编写自己的函数来将XML文本解析为对象,这些对象可以操作并呈现回XML文本。为了处理嵌套,我允许XML对象包含其他XML对象作为元素。
由于我自动生成这些XML对象,我的计划是在创建dict时将它们作为dict的元素输入。我计划生成一个名为name的属性,我可以将其用作键,并使XML对象本身成为分配给该键的值。
这一切对我来说都是有道理的。但现在我意识到我还想保存一个名为line_number
的属性,这个属性是我第一次遇到该对象的原始XML文件中的行,并且在某些情况下我可能想要找到它line_number
的XML对象,而不是名称。
所以这些是我的问题:
答案 0 :(得分:2)
是的,有可能。不需要特别的魔力:
In [1]: val = object()
In [2]: d = {}
In [3]: d[123] = val
In [4]: d['name'] = val
In [5]: d
Out[5]: {123: <object at 0x23c6d0>, 'name': <object at 0x23c6d0>}
但是,我会使用两个单独的词典,一个用于按名称索引,另一个用于按行号索引。即使名称和行号完全不相交,我认为这是一个更简洁的设计。
答案 1 :(得分:2)
my_dict['key1'] = my_dict['key2'] = SomeObject
应该工作正常我会想
答案 2 :(得分:1)
由于字典可以包含多种类型的键,并且您使用名称(仅字符串)作为一个键而数字(仅限整数)作为另一个键,您可以简单地使两个单独的条目指向同一个对象 - 一个用于数字和一个字符串。
dict[0] = dict['key'] = object1