Python中使用lambda表达式向字典添加值

16

有没有可能在lambda表达式中添加字典的值?

也就是实现一个与下面方法类似的lambda函数。

def add_value(dict_x):
    dict_x['a+b'] = dict_x['a'] + dict_x['b']
    return dict_x
2个回答

23

从技术上讲,您可以使用副作用来更新它,并利用.update返回的 None 为假值,通过布尔运算返回基于字典的内容:

add_value = lambda d: d.update({'a+b': d['a'] + d['b']}) or d

不过,我并没有看到在真实代码中使用lambda或是你在问题中编写的函数的任何理由。


1
谢谢你的回答!虽然我不太明白为什么要在实际代码中这样做,但我来这里是想找一种使用reduce(在键的列表列表上)构建字典的方法。还有其他更好的方法吗? - Attilio
当尝试对字典列表进行映射并为每个字典添加键值对时,这可能会很有用。lambda d: {*d, 'a+b': d['a'] + d['b']} 由于某种原因(可能是输入错误)无法正常工作。 - Ilan Yashuk

0
你可以构建一个自定义字典,继承自dict,覆盖它的__setitem__函数。请参阅Python文档。
class MyCustomDict(dict):
    def __setitem__(self, key, item): 
        # your method here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接