我不知道如何解释这一点,但我的任务是将字典导出为文本文件,并将其格式化正确。字典看起来像这样:
obstacles = {4: [(5, 6), (9, 11)],
5: [(9, 11), (19, 20), (30, 34)],
13: [(5, 8), (9, 11), (17, 19), (22, 25), (90, 100)]}
,它应该输出为(正确的方式):
004: 5-6 9-11
005: 9-11 19-20 30-34
013: 5-8 9-11 17-19 22-25 90-100
现在我创建了一个代码,它输出到一个文本文件,像这样:
004: 5-6
004: 9-11
005: 9-11
005: 19-20
005: 30-34
013: 5-8
013: 9-11
013: 17-19
013: 22-25
013: 90-100
这就是我的代码看起来像,我的意思是它输出像这样,因为它是在一个for循环,但如果有人能帮助我理解和帮助我修复我的代码,这将是非常感激。我的代码是这样的:
with open('filename.txt', 'w') as f:
for v, k in obstacles.items():
tridec = f'{v:03}'
for broj1, broj2 in k:
xx = str(broj1) + "-" + str(broj2)
f.write("%s:t" % tridec + "%sn" % xx)
我尝试像这样使用。join函数:
with open('filename.txt', 'w') as f:
for v, k in obstacles.items():
tridec = f'{v:03}'
r = ("-".join(str(z) for z, m in k))
r1 = ("-".join(str(m) for z, m in k))
mr = r + "t" + r1
f.write("%s:t" % tridec + "%st" % r + "%sn" % r1)
但是这个输出是这样的:
004: 5-9 6-11
005: 9-19-30 11-20-34
013: 9-17-22-90 11-10-25-100
我知道它这样输出的原因,因为它先组合了z,再加上"-"然后是变量m。但它应该像这个例子004:z - m z - m。代码看起来大概是这样的,当我试图重写它的时候,我从脑子里写了这个,因为我删除了将数字输入txt文件的方法。
循环遍历每个键的值(该值是tuple
s中的list
),并为每个元素调用f.write
。
with open('filename.txt', 'w') as f:
for v, k in obstacles.items():
tridec = f'{v:03}:'
f.write(tridec)
for a,b in k:
f.write(f't{a}-{b}')
f.write('n')