2012-12-12 72 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

相關問題