2013-03-25 69 views
0

我有3列的文件:的Python:字典有3项

ArabicWord POS EnglishTranslation 

这是阿拉伯字,其POStag和阿拉伯语单词的英文翻译。所以根据不同的POS标签,一个阿拉伯文字可能会有不同的翻译。 现在我想将这个文件存储在Python中的散列中。但我的问题是每列的实体可能会出现多次(没有人是唯一的)。存储这个文件的一种方法是连接第一和第二列以创建一个独特的实体(每个阿拉伯词由一个特定的标签允许只有一个翻译),但是因为我需要散列到更远的进程,这种方式减缓了进程。 还有别的办法吗?

更新: 第一种方法适用于存储文件。但我现在的问题是如何使用这些元组。我可以通过dict [0],dict [1]访问阿拉伯词和pos标签,但我怎样才能访问英语翻译?

+2

Python字典也可以将元组作为关键字:'words [ArabicWord,POS] = EnglishTranslation'?或者使用嵌套字典:'words [ArabicWord] = dict(); 'words [ArabicWord] [POS] = EnglishTranslation'(这是'collections.defaultdict'可能有用的地方)。 – 2013-03-25 11:20:02

+0

字典词典怎么样? – jamylak 2013-03-25 11:20:52

+0

我也会使用元组字典,它不应该放慢过程。它仍然是散列。 – whatyouhide 2013-03-25 11:20:56

回答

2

按你的问题的意见,我会用词典的词典:

定义的数据结构:

>>> words = { 'ArabicWord' : { 'POS1' : 'EnglishTranslation1' } } 
>>> words['ArabicWord']['POS2'] = 'EnglishTranslation2' 
>>> words 
{'ArabicWord': {'POS2': 'EnglishTranslation2', 'POS1': 'EnglishTranslation1'}} 

找到所有的POS标签为一个特定的阿拉伯语单词:

>>> words['ArabicWord'].keys() 
['POS2', 'POS1'] 

查找特定阿拉伯词/ POS标签组合的英文翻译:

>>> words['ArabicWord']['POS1'] 
'EnglishTranslation1' 
0

我建议使用内存sqlite数据库。这将允许您继续将数据作为三个不同的列来处理,并且很容易获取您需要的任何数据。

+0

我不想让它变得复杂。我其实需要一个非常简单的方法来做到这一点。因为我不想做很多过程。 – Hakim 2013-03-25 12:01:32

+0

一个sqlite数据库不是很复杂,不需要任何其他进程。它非常快速和轻量级。我想你会对它的简单性感到惊讶。 – 2013-03-25 12:50:39