2012-12-12 37 views
0

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

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

这一切对我来说都是有意义的。但是现在我意识到我真的很想保存一个名为line_number的属性,它将成为我第一次遇到该对象的原始XML文件的一行,并且可能会出现一些情况,我希望通过该对象定位一个XML对象line_number,而不是按名称。

所以这是我的问题:

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

你总是可以有映射到相同值的字典(在几乎所有的实施几乎任何语言的)多个键 - 它是你需要解决相同的密钥多个值。 –

+1

如果给定行中有多个标签,你会怎么做? – PaulMcG

+1

XML不是面向行的它可以在不改变语义的情况下重新格式化。你真正应该关心的是路径。 – Keith

回答

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

我会,但是,使用两个不同的字典,一个用于索引的名字,和一个由行号索引。即使这些名称和行号完全不相交,我认为这是一个更清洁的设计。

+0

单独的字符+1 – PaulMcG

2
my_dict['key1'] = my_dict['key2'] = SomeObject 

应该正常工作,我觉得

1

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

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

相关问题