需求:替换rusult中的键 14 为 'E 即, 14 -> 'E'
result = {1 : 'note', 214 : 'jack', 14 : 'jupyter', 56 : 'pycharm'}
result['E'] = result.pop(14)
result
输出: {1: 'note', 214: 'jack', 56: 'pycharm', 'E': 'jupyter'}
需求:批量替换为map1中的键值对
map1 = {1:'A', 2:'B', 3:'C', 4:'D', 5:'S', 14:'E', 53:'A+', 54:'B+', 55:'C+', 56:'D+', 57:'E+',
58:'-', 213:'Da', 214:'Db', 215:'Ea', 216:'Eb'}
result = {1 : 'note', 214 : 'jack', 14 : 'jupyter', 56 : 'pycharm'}
for k in result.keys(): # 错误示例
result[map1[k]] = result.pop(k) # KeyError: 'A', 表示找不到'A'.
错因: for循环执行第一次时,可以顺利执行完毕,当执行第二次时,result.keys()动态的迭代,重新生成所有的键,会把新添加的’A’也作为键进行遍历, 当 k = 'A’时,map1[‘A’]是找不到的(map1中没有’A’这个键),所以报错.
map1 = {1:'A', 2:'B', 3:'C', 4:'D', 5:'S', 14:'E', 53:'A+', 54:'B+', 55:'C+', 56:'D+', 57:'E+',
58:'-', 213:'Da', 214:'Db', 215:'Ea', 216:'Eb'}
result = {1 : 'note', 214 : 'jack', 14 : 'jupyter', 56 : 'pycharm'}
for k in list(result): # 争取示例,将其变为list
result[map1[k]] = result.pop(k)
result
输出:{'A': 'note', 'Db': 'jack', 'E': 'jupyter', 'D+': 'pycharm'}