我正在开发一个简单的解析器,其中订单/索引很重要。但是,每个条目都有许多Null值,所以为了节省空间,我想删除它们。为了维护订单/索引信息,我试图在字典中创建一个字典,其中内部字典的键是“外部字典的键+索引”。
它始于一个长字符串:
'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']}
我想我需要在下一部分使用map(),但无法弄清楚要调用哪个函数来正确格式化字典以及如何引用外键。我将外键命名为使其更容易调用,但我仍然坚持添加索引并使其成为内部字典的关键。我最终想要的是:
{'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 :(得分: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
(注意:假设长字符串格式不会改变)