python - 在列表理解中将字符串添加到字典
问题描述
假设我有一个files
包含 json 格式数据的文件名列表。要接收列表中的数据,每个文件都有一个条目,我使用列表推导:
>>> import json
>>> data = [json.load(open(file)) for file in files]
现在我想知道,是否有办法将文件名附加file
到 json 数据中,就好像它看起来像这样:
{
'Some': ['data', 'that', 'has', 'already', 'been', 'there'],
'Filename': 'filename'
}
就我而言,json.load()
返回 a dict
,所以我尝试了类似于这个 question的东西。这对我不起作用,因为files
包含字符串而不是字典。
编辑
为了澄清起见,如果dict.update()
没有返回None
,这可能会起作用:
>>> data = [dict([('filename',file)]).update(json.load(open(file))) for file in files]
解决方案
是的你可以。这是一种方法(需要 Python 3.5+):
import json
data = [{**json.load(open(file)), **{'Filename': file}} for file in files]
该语法{**d1, **d2}
结合了 2 个字典,优先选择d2
. 如果您想显式添加项目,您可以简单地添加一个额外的项目,如下所示:
data = [{**json.load(open(file)), 'Filename': file} for file in files]
推荐阅读
- python - 如何替换 DataFrame 中的最后一个 empy 行(pandas,python)
- r - 使用 purrr::map 获取 '[.data.frame'(.x, ...) 中的错误:选择了未定义的列'
- kubernetes - 有没有办法仅在使用 Kubernetes 中的 HorizontalPodAutoscaler 处理消息(pod 完成其任务)时缩小 pod?
- c++ - 2个或更多TU中的内联函数的多个定义
- sql-server - 在 SQL 中查找整个重复的发票
- c# - 有没有办法在辅助屏幕中获取未选择的前景窗口的进程 ID
- excel - 如何在 MAC 电脑上将 Excel VBA 导出为 PDF
- python - 如何使用 TensorFlow 2.0 计算分类交叉熵?
- css - Grid Property Similar to Flex-Grow
- netsuite - 使用“高级 PDF/模板”编辑器从保存的搜索构建自定义报告