字典和Python列表

时间:2018-07-19 13:39:32

标签: python

这是我的数据

2018-06-19 136768197 e230702d
2018-06-19 136768197 f14c4f07
2018-06-15 1157040118 a527b130
2018-06-15 1157040118 f05a746f

作为输出,我需要以下命令

{
  '2018-06-19': {
    '136768197': ['e230702d', 'f14c4f07']
  },
  '2018-06-15': {
    '1157040118': ['a527b130', 'f05a746f']
  }
}

我尝试解决的问题:

d = defaultdict(list)
c = dict()
with open("c:/Python/hitId.txt") as f:    
    for line in f:
        key, s, h = line.split()
        d[s].append(h)
        c[key] = d

但是输出包含重复的数据(格式化为突出显示问题):

{'2018-06-15': {'1157040118': ['a527b130', 'f05a746f'],'136768197': ['e230702d', 'f14c4f07']}),
 '2018-06-19': {'1157040118': ['a527b130', 'f05a746f'],'136768197': ['e230702d', 'f14c4f07']})}

1 个答案:

答案 0 :(得分:0)

我认为您想要的是Python: defaultdict of defaultdict?中回答的默认字典的默认字典;我辩论了这是否应该是一个重复的问题(如果有人想说的话,那很好),但是基本上我认为是这样的:

x = defaultdict(lambda: defaultdict(list))
with open("c:/Python/hitId.txt") as f:    
    for line in f:
        key, s, h = line.split()
        x[key][s].append(h)

应该为您提供所需的东西(转换成原始字典需要做一些额外的工作)。如果您想最终将其打印出来

  import json
  print(json.dumps(x)) 

应该做