python - 从字典列表中删除某些键

标签 python list dictionary

[{'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/

相关文章:

python - PyInstaller 应用程序的设置图标

python - C、Perl 和 Python 相似的循环不同的结果

python - 根据时间对字典列表值进行排序

java - 如何定位列表 map 中的条目?

python - 计算两个列表字典之间的相似性的最有效方法是什么?

python - 使用条件匹配一行中的多个模式

Python 列表错误

java - JSP 和 Java - 使用 jslt forEach 在 JSP 中显示数据 - 如何访问较低的元素

Python 将字典列表写入 csv

python - Youtube API-终端尝试打开浏览器并失败