字典dict批量更改键/更改指定某一个键 python

(一) dict 更改指定某一个键

需求:替换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'}

(二) dict  批量 更改 键

需求:批量替换为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'.

输出:
在这里插入图片描述
知识点:

  1. 在python2中,字典dict.keys()的内建方法会以列表list的形式返回字典的所有键。 到了python3中,dict.keys()是以迭代器Iterator的形式生成的字典所有键。
  2. 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'}

你可能感兴趣的:(Python,python,字典)