如何在Python字典中将字符串追加到现有值

时间:2019-01-03 22:30:58

标签: python python-3.x

我有一本名为signames的python字典,其中包含数千个键值对。截短的版本:

signames = {'A_13342_2674_14_': '13342-2674-14.03-0-2-1', 'A_13342_2675_14_': '13342-2675-14.03-0-2-1', 'A_13342_2676_14_': '13342-2676-14.03-0-2-1'}

我想将字符_附加到python字典中所有值的开头,以便最终的字典看起来像:

signames = {'A_13342_2674_14_': '_13342-2674-14.03-0-2-1', 'A_13342_2675_14_': '_13342-2675-14.03-0-2-1', 'A_13342_2676_14_': '_13342-2676-14.03-0-2-1'}

我的代码没有错误,但不会更新值:

for key, value in signames.items():
    key = str(_) + key

3 个答案:

答案 0 :(得分:3)

您的key变量在每次迭代中仅保存dict的每个键的值,如果为该键分配新值,则只会更新该key变量,而不更新dict。您应该通过在每次作业中引用字典的键来更新字典本身:

for key in signames:
    signames[key] = '_' + signames[key]

但是正如@jpp在评论中指出的那样,迭代遍历signames.items()会更惯用,因为赋值中的表达式还涉及每个键的值:

for key, value in signames.items():
    signames[key] = '_' + value

答案 1 :(得分:0)

您可以在此处进行经典的dict理解:

signames = {k: '_'+v for k,v in signames.items()}

答案 2 :(得分:0)

这是错误的key = str(_) + key,因为signmaes字典从未更新。只需将此行更改为signames[key] = '_' + value