首页 > 解决方案 > 在列表理解中将字符串添加到字典

问题描述

假设我有一个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]

标签: pythonjsondictionarylist-comprehension

解决方案


是的你可以。这是一种方法(需要 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]

推荐阅读