这是我的数据
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']})}
答案 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))
应该做