2017-03-08 71 views
0

我工作的一個簡單的解析器,其中訂單/指數事項。但是,每個條目都有很多空值,所以爲了節省空間,我想刪除它們。爲了維護順序/索引信息,我試圖在內部字典的關鍵字是'外部字典的鍵+索引'的字典中創建字典。創建從字典詞典作爲迭代

它開始作爲一個長字符串:

'Blue|periwinkle|power|morning|cyan\nPurple|indigo|violet|royal|electric\nred|rogue|mauve|wine|magenta\nyellow|gold|amber|flax|mustard' 

所以,我打開該文件到Python和開打破了字符串如下:

with open('example1.hl7', 'r') as message: 
    for i,line in enumerate(message): 
     line = line.split('|', 1) 
     linekey = line[0] 
     line = {linekey + str(i + 1): line[1]} 
     line = {key: list(map(str, value.split('|'))) for key, value in line.items()} 

這給了我這樣的:

{'Blue': ['periwinkle', 'power', 'morning', 'cyan'], 
'Purple': ['indigo', 'violet', 'royal', 'electric'], 
'red': ['rogue', 'mauve', 'wine', 'magenta'], 
'yellow': ['gold', 'amber', 'flax', 'mustard']} 

我在想我需要使用地圖()的下一部分,但無法弄清楚什麼函數調用正確的形式在字典處以及如何引用外鍵。我將外鍵命名爲使調用更容易,但我仍然在添加索引並將其作爲內部字典的關鍵時遇到困難。我試圖最終與:

{'Blue': 
    {'Blue1': 'periwinkle', 'Blue2': 'power', 'Blue3': 'morning', 'Blue4': 'cyan'}, 
'Purple': 
    {'Purple1': 'indigo', 'Purple2': 'violet', 'Purple3': 'royal', 'Purple4': 'electric'}, 
'Red': 
    {'Red1': 'rogue', 'Red2': 'mauve', 'Red3': 'wine', 'Red4': 'magenta'}, 
'Yellow': 
    {'Yellow1': 'gold', 'Yellow2': 'amber', 'Yellow3': 'flax', 'Yellow4': 'mustard'} 
} 

回答

0

試試這個。
我把一長串文件example1.hl7英寸

outer_dict = {} 

with open('example1.hl7', 'r') as _file: 
    line = _file.read() 

for i in line.strip().split('\n'): 
    values = i.split('|') 
    outer_key = values[0] 
    outer_dict[outer_key] = {"{}{}".format(outer_key, index+1): j 
          for index, j in enumerate(values[1:])} 
print outer_dict 

注:假設一長串格式不會發生變化)