0

我正在编写自己的函数,用于将 XML 文本解析为可以操作并呈现回 XML 文本的对象。为了处理嵌套,我允许 XML 对象包含其他 XML 对象作为元素。

由于我会自动生成这些 XML 对象,因此我的计划是在创建它们时将它们作为 dict 的元素输入。我计划生成一个名为 name 的属性,我可以将其用作键,并让 XML 对象本身成为分配给该键的值。

在这一点上,所有这些对我来说都是有意义的。但是现在我意识到我真的很想保存一个名为 的属性line_number,这将是我第一次遇到该对象的原始 XML 文件中的行,并且可能在某些情况下我想通过 定位 XML 对象line_number,而不是名字。

所以这些是我的问题:

  1. 是否可以使用字典,以便我可以通过名称或行号找到我的 XML对象?也就是说,是否可以将多个键分配给字典中的单个值?
  2. 我怎么做?
  3. 如果这是一个坏主意,有什么更好的方法?
4

3 回答 3

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>}

但是,我会使用两个单独的字典,一个用于按名称索引,另一个用于按行号索引。即使名称和行号的集合完全不相交,我认为这是一种更简洁的设计。

于 2012-12-12T18:13:04.360 回答
2
my_dict['key1'] = my_dict['key2'] = SomeObject

我认为应该可以正常工作

于 2012-12-12T18:13:32.603 回答
1

由于字典可以有多种类型的键,并且您使用名称(仅限字符串)作为一个键,使用数字(仅限整数)作为另一个键,您可以简单地使两个单独的条目指向同一个对象 - 一个用于数字,一个用于为字符串。

dict[0] = dict['key'] = object1

于 2012-12-12T18:15:14.930 回答