假设我有一个包含json格式数据的文件名files
列表。要在列表中接收包含每个文件条目的数据,我使用列表解析:
>>> import json
>>> data = [json.load(open(file)) for file in files]
现在我想知道,如果有办法将文件名file
附加到json数据,就像它看起来像这样:
{
'Some': ['data', 'that', 'has', 'already', 'been', 'there'],
'Filename': 'filename'
}
对于我的情况,json.load()
会返回dict
,因此我尝试了与this question类似的内容。这对我来说没有用,因为files
包含字符串而不是字典。
为了澄清,如果dict.update()
没有返回None
,这可能会有效:
>>> data = [dict([('filename',file)]).update(json.load(open(file))) for file in files]
答案 0 :(得分:2)
是的,你可以。这是一种方式(需要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]
答案 1 :(得分:2)
您可以将自定义词典合并到正在加载的词典中,如this answer。
data = [{**json.loads("{\"el...\": 5}"), **{'filename': file}} for file in files]