从字典列表中删除某些键

用户308827
[{'YEAR': 2016.0, 'DOY': 310.0, 'temperature': 12.55, 'min_temp': 10.61, 'max_temp': 14.19, 'field_id': 1, 'date': Timestamp('2016-11-05 00:00:00')}, {'YEAR': 2016.0, 'DOY': 311.0, 'temperature': 14.89, 'min_temp': 12.6, 'max_temp': 17.49, 'field_id': 1, 'date': Timestamp('2016-11-06 00:00:00')}]

在上面的字典列表中,我只想保留 foll。此列表中的键:['YEAR', 'temperature']

过滤字典只包含某些键?,我可以将 dict 过滤为仅某些键,如下所示:

new_dict = { your_key: old_dict[your_key] for your_key in your_keys }

-- 更新:如果your_key字典中不存在key from ,soln 也应该工作

假真

列表理解与 dict 理解结合起来得到字典列表:

>>> lst = [{'YEAR': 2016.0, 'DOY': 310.0, 'temperature': 12.55,
            'min_temp': 10.61, 'max_temp': 14.19, 'field_id': 1,
            'date': Timestamp('2016-11-05 00:00:00')},
           {'YEAR': 2016.0, 'DOY': 311.0, 'temperature': 14.89,
            'min_temp': 12.6, 'max_temp': 17.49, 'field_id': 1,
            'date': Timestamp('2016-11-06 00:00:00')}]
>>> keys_to_retain = ['YEAR', 'temperature']
>>> [{key: d[key] for key in keys_to_retain} for d in lst]
[{'YEAR': 2016.0, 'temperature': 12.55}, {'YEAR': 2016.0, 'temperature': 14.89}]

UPDATE根据问题的变化

即使字典中不存在来自 your_key 的键,为了使 dict 理解工作,请使用if子句:

[{key: d[key] for key in keys_to_retain if key in d} for d in lst]
                                        ^^^^^^^^^^^

或者,如果您希望结果字典具有缺失键的默认值,您可以使用dict.get默认值而不是dict[..]

[{key: d.get(key, 'default_value') for key in keys_to_retain} for d in lst]
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章