假设我有一个词典列表:
>>> d = [{'a': 2, 'b': 3, 'c': 4}, {'a': 5, 'b': 6, 'c': 7}]
我想执行一个map操作,我在每个字典中只更改一个值.一种可能的方法是创建一个新的字典,它只包含原始值和更改的值:
>>> map(lambda x: {'a': x['a'], 'b': x['b'] + 1, 'c': x['c']}, d)
[{'a': 2, 'c': 4, 'b': 4}, {'a': 5, 'c': 7, 'b': 7}]
如果词典有很多项,这可能会变得难以驾驭.
另一种方法可能是定义一个复制原始字典并仅更改所需值的函数:
>>> def change_b(x):
... new_x = x.copy()
... new_x['b'] = x['b'] + 1
... return new_x
...
>>> map(change_b, d)
[{'a': 2, 'c': 4, 'b': 4}, {'a': 5, 'c': 7, 'b': 7}]
然而,这需要编写一个单独的函数并失去lambda表达式的优雅.
有没有更好的办法?