我想简化修改巨大的词典周围很多变化(从日期字符到蟒蛇日期,小数到浮动等),并且我想要能够确定是否需要更改某些东西我只是想改变一些数字,而不是日期):在词典理解条件
def transform_dictionary(dictionary, callback, qualification_callback=None):
if qualification_callback:
dictionary.update({k: callback(v) for k, v in dictionary.items() if qualification_callback(v) else k: v})
else:
dictionary.update({k: callback(v) for k, v in dictionary.items()})
return dictionary
d = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5}
def bigger_than_two(number):
return number > 2
def double_it(number):
return number * 2
transform_dictionary(d, double_it, bigger_than_two)
# expecting {'one': 1, 'two': 2, 'three': 6, 'four': 8, 'five': 10}
transform_dictionary(d, double_it)
# expecting {'one': 2, 'two': 4, 'three': 6, 'four': 8, 'five': 10}
我念叨字典推导,但没有看到一个办法做我想做的,要么做我的计算或保留值不变。有没有办法从上面得到我想要的结果?
任何理由,这需要是一个字典理解? – pzp
你正在犯一个相当常见的错误,就是将理解过滤条件中的if if和if条件表达式中的if if混合在一起。你试图编写的是一个条件表达式,但是因为理解特定的过滤器语法看起来像是一样的东西,所以你试图在过滤器所在的位置放置if if。 – user2357112
我只是觉得理解最简单。我希望能够转换符合大字典标准的字典值 – codyc4321