【问题标题】:Replacing keys in dictionary conditional on its value [duplicate]根据其值替换字典中的键[重复]
【发布时间】:2020-04-16 20:56:59
【问题描述】:

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

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

for k,v in d.items():
      if v == 1:
        print(k)
        d[k[:-1]] = d.pop(k)

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

【问题讨论】:

  • 我希望你只是在处理时间;)。对于遵循不同复数模式的单词,此逻辑将中断{'sheep': 1} 将变为 shee

标签: python dictionary


【解决方案1】:
d = {'hours': 1, 'seconds': 30}

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

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

【讨论】:

    猜你喜欢
    • 2019-11-11
    • 2015-10-30
    • 2019-04-15
    • 2013-11-29
    • 2020-10-20
    • 1970-01-01
    • 2021-07-21
    • 2021-07-13
    • 2014-07-12
    相关资源
    最近更新 更多