Dictionary comprehensions疑问:如何在字典推导式中排除不符合条件的键值对
解决字典推导式过滤键值对的问题
你当前的写法用了三元表达式设置值,会导致不符合条件的键被保留但值设为None,而要完全排除这类键值对,不需要写else,直接把过滤条件放在字典推导式的循环之后即可。
正确的代码如下:
num_dict = {1:1, 2:4, 3:9} twice_num_dict = {key: value for key, value in num_dict.items() if value * 2 >= 8} print(twice_num_dict)
原理说明
这种写法的逻辑是:遍历原字典的每一组键值对,只将满足value*2 >=8条件的键值对添加到新字典中,不符合条件的会直接被跳过,不会出现在最终的twice_num_dict里。运行结果会是{2:4, 3:9},完全符合你只保留符合条件键值对的需求。
内容的提问来源于stack exchange,提问作者Arjun Hooda
相关产品推荐
相关产品推荐

