如何用一行字典推导式直接定义类字典属性并替换偶数值?
需求实现方案
这个需求完全可行,以下是两种简洁的一行代码实现方式:
方式一:字典推导式遍历键值对
直接遍历原字典的items(),同时拿到键和值,无需额外变量:
class Foo: bar = {k: v if v % 2 != 0 else 0 for k, v in {"hello": 123, "world": 456}.items()}
逻辑很直观:对每个键值对,判断值是否为奇数,是就保留原值,否则替换成0。
方式二:生成器表达式配合dict()构造
和上面逻辑一致,只是用dict()包裹生成器表达式:
class Foo: bar = dict((k, v if v % 2 else 0) for k, v in {"hello": 123, "world": 456}.items())
你之前的代码报错是因为只遍历了字典的键,却试图引用未定义的d来取值,而直接遍历items()就能同时获取键和值,完美避开这个问题。
内容的提问来源于stack exchange,提问作者notacorn
相关产品推荐
相关产品推荐

