根据其值替换字典中的键

TYL*_*TYL 0 python dictionary

如果它的值为 1,我试图删除字典中键的最后一个字符:

d = {'hours': 1, 'seconds': 30}

for k,v in d.items():
      if v == 1:
        print(k)
        d[k[:-1]] = d.pop(k)
Run Code Online (Sandbox Code Playgroud)

但是,它会一直弹出,直到键剩下 1 个字符为止。在这种情况下,小时应该变成小时时变成了小时。

son*_*s21 5

d = {'hours': 1, 'seconds': 30}

for k,v in list(d.items()):
  if v == 1:
    print(k)
    d[k[:-1]] = d.pop(k)
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题,因为您正在修改循环中的 dict 并且迭代器正在更改,因此您的代码无法正常工作的原因。它具有不可预测的行为。