【发布时间】:2020-01-01 11:26:50
【问题描述】:
我正在使用的文本文件
Al:dog-walking:2:painting:1
Bob:dog-walking:1:knife-sharpening:3
Carol:cleanup:1:dog-walking:2:painting:1
想要返回的字典看起来像
{('Al','dog-walking'): 2,
('Al','painting'): 1,
('Bob','dog-walking'): 1,
('Bob','knife-sharpening'): 3,
('Carol','cleanup'): 1,
('Carol','dog-walking'): 2,
('Carol','painting'): 1}
这是我当前的代码,它产生了几乎正确的结果
def readdb(file):
d = defaultdict(int)
for line in open('formelol'):
f=line.strip().split(':')
c=f[0]
x=tuple((c,f[1]))
z=tuple((c,f[3]))
d[x]=int(f[2])
d[z]=int(f[4])
return d
print(readdb(file='formelol'))
返回:
{('Al', 'dog-walking'): 2,
('Al', 'painting'): 1,
('Bob', 'dog-walking'): 1,
('Bob', 'knife-sharpening'): 3,
('Carol', 'cleanup'): 1,
('Carol', 'dog-walking'): 2})
我错过了('Carol','painting'): 1}的最后一行
对我来说,这段代码有点硬编码。
我的问题是,是否有更 Pythonic 的方式来产生这些结果,如果有,我该怎么做?
【问题讨论】:
标签: python file dictionary