2016-11-10 98 views
0

想象一个充满标准消息的文件。每条消息都有一个入站消息和多个出站消息。每条消息都有一个在入站和出站之间共享的唯一ID。我想要做的就是下一个ID关于构建Python字典

# Dictionary I am trying to build up 
data = {} 

for message in my_log_file: 
    details = {} 
    tag_11 = 'undef' 

    for tag in message.split('\001'): 
     if (I find something useful): 
      kv = tag.split('=') 
      key = kv[0] 
      val = kv[1] 

      # Found my id 
      if key == '11': 
       tag_11 = val   

      # Found data to be associated with this id 
      if key == '35' or key == '150': 
       details[key] = val 


    # Now trying to create an association 
    if 'undef' is not tag_11: 
     if data[str(tag_11)]: 
      data[tag_11].append(details) 
     else: 
      data[tag_11] = details 

我有什么期望所有邮件的组细节

If tag_11 is 12804581 
If details is {'150': '4', '<': '06:19:45.262932', '35': '8'} 

I expect to see an association between the two 

我能得到什么

Traceback (most recent call last): 
    File "ack.py", line 69, in ? 
    if data[str(tag_11)]: 
KeyError: '12804581' 

请帮我创建协会。在Java中来思考,我需要一个<String, List<o>>

+0

“我希望看到两者之间的关联:”这是令人难以置信的模糊。我们在这里处理代码,你可以非常精确。显示你想要的字典实际上。 –

回答

0

认为你想要的东西,如:

.... 
tag_11_key = str(tag_11) 
if 'undef' is not tag_11: 
    if tag_11_key not in data: 
     data[tag_11_key] = [] 

    data[tag_11_key].append(details) 
+0

进一步考虑这一点,将'data'设为'defaultdict(list)'。但从教学的角度来看,你的答案是开始的地方。 –