Python中的dict和list

2024-06-15 21:10:37 发布

您现在位置: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']})}

Tags: 数据key命令txtwithlineopendict
1条回答
网友
1楼 · 发布于 2024-06-15 21:10:37

我想你需要一个默认的dict,一个默认的dict,正如在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)

你应该得到你想要的(一点额外的工作需要转换成一个原始的dict)。如果你想最终把它打印出来

  import json
  print(json.dumps(x)) 

我应该这么做

相关问题 更多 >