如何快速简便地移除字典指定键对应列表中小于3的元素?
移除指定字典键对应列表中的元素
问题
给定如下字典:
my_dict = {'A' : [1, 2, 3, 4, 5], 'B' : [10, 1, 2, 5, 8], 'C': [6, 5, 3, 1]}
需要移除键"A"和"C"对应列表中小于3的元素,同时保留键"B"的内容不变,最终输出:
my_dict = {'A' : [3, 4, 5], 'B' : [10, 1, 2, 5, 8], 'C': [6, 5, 3]}
解决方案
方法1:原地修改原字典
直接遍历需要处理的键,用列表推导式快速过滤元素,原地更新字典:
my_dict = {'A' : [1, 2, 3, 4, 5], 'B' : [10, 1, 2, 5, 8], 'C': [6, 5, 3, 1]} # 指定需要处理的键 target_keys = ['A', 'C'] for key in target_keys: my_dict[key] = [num for num in my_dict[key] if num >= 3] print(my_dict)
这种方式简单高效,直接修改原字典,适合不需要保留原始数据的场景。
方法2:生成新字典(不修改原字典)
如果不想改动原字典,可以用字典推导式生成新字典:
my_dict = {'A' : [1, 2, 3, 4, 5], 'B' : [10, 1, 2, 5, 8], 'C': [6, 5, 3, 1]} target_keys = {'A', 'C'} # 用集合做成员判断效率更高 new_dict = { k: [num for num in v if num >= 3] if k in target_keys else v for k, v in my_dict.items() } print(new_dict)
遍历原字典的所有键值对,对目标键对应的列表进行过滤,其他键直接保留原内容,最终得到符合要求的新字典。
内容的提问来源于stack exchange,提问作者Imran
相关产品推荐
相关产品推荐

