为什么变量不在循环外更新?

时间:2018-08-21 09:17:38

标签: python python-3.x

无法弄清楚为什么结果中的第一个键是“ 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)

1 个答案:

答案 0 :(得分:5)

缩进。您执行for else而不是if else,这将导致replacedd覆盖。您需要使用另外两个空格缩进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)