[{'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')}]
在上面的字典列表中,我只想保留以下内容。此列表中的键:['YEAR', '温度']
来自Filter dict to contain only certain keys? ,我可以将字典过滤为仅某些键,如下所示:
new_dict = { your_key: old_dict[your_key] for your_key in your_keys }
--更新:
如果字典中不存在 your_key
中的键,则该解决方案也应该有效
最佳答案
合并list comprehension使用字典理解来获取字典列表:
>>> 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}]
根据问题变化更新
要使字典理解工作,即使字典中不存在来自 your_key 的键,请使用 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]
^^^^^^^^^^^^^^^^^^^^^^^^^^^
关于python - 从字典列表中删除某些键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43025549/