无法弄清楚为什么结果中的第一个键是“ abc”而不是我期望的“ c”。 (我使用的是Python 3.6.4)
数据结构很奇怪,因为我删除了不相关的键和值。
f = { 'replace' : { 'ab' : ''} }
r = {}
data = { 'abc' : 1, 'def' : 2, 'ghi' : 3, 'jkf' : 4, 'lmn' : 5 }
for d in data:
replaced = 'hello'
for x in f['replace']:
if x in d:
replaced = d.replace(x, f['replace'][x])
print(replaced)
else:
replaced = d
r.update( { replaced : data[d] } )
print(r)
答案 0 :(得分:5)
缩进。您执行for else
而不是if else
,这将导致replaced
被d
覆盖。您需要使用另外两个空格缩进else
:
f = { 'replace' : { 'ab' : ''} }
r = {}
data = { 'abc' : 1, 'def' : 2, 'ghi' : 3, 'jkf' : 4, 'lmn' : 5 }
for d in data:
replaced = 'hello'
for x in f['replace']:
if x in d:
replaced = d.replace(x, f['replace'][x])
print(replaced)
else:
replaced = d
r.update( { replaced : data[d] } )
print(r)