如何替换dictpython for循环中键

q3qa4bjr  于 2023-02-18  发布在  Python
关注(0)|答案(2)|浏览(153)
d={"given_age":"30","given_weight":"160","given_height":6}

想要从每个密钥中移除"given_"

for key,value in d.items():
      new_key=re.sub(r'given_','',key)
      if new_key!=key:
            d[new_key]=d.pop(key)

下面出错了,我只是想换个键,为什么它会抱怨呢?

RuntimeError: dictionary keys changed during iteration
uqjltbpv

uqjltbpv1#

在迭代集合时,最好不要修改集合。在此使用dict解析。

res = {re.sub('given_','',k) : v for k, v in d.items()}
bakd9h0s

bakd9h0s2#

您还可以将str.replace()与dict综合一起使用

d={"given_age":"30","given_weight":"160","given_height":6}

{key.replace('given_', '') : value for key, value in d.items()}

#{'age': '30', 'weight': '160', 'height': 6}

按照@CrazyChucky的建议编辑

{key.removeprefix('given_') : value for key, value in d.items()}
#{'age': '30', 'weight': '160', 'height': 6}

相关问题