Python 构造JSON数组

Python 构造JSON数组,python,arrays,json,iteration,Python,Arrays,Json,Iteration,我想要这样的东西: [ ('Urbandale paid the Regional Municipality of Ottawa-Carleton "redevelopment" charges', {'entities': [(0, 9, 'PLTF')]}), ('Urbandale carries on business as a land developer.', {'entities': [(0, 9, 'PLTF')]}) ] 我可以将其

我想要这样的东西:

[
    ('Urbandale paid the Regional Municipality of Ottawa-Carleton "redevelopment" charges',
     {'entities': [(0, 9, 'PLTF')]}),
    ('Urbandale carries on business as a land developer.',
     {'entities': [(0, 9, 'PLTF')]})
    ]
我可以将其设置为变量并使其工作,但现在我尝试自动构建JSON数组。这一个似乎是在一个非传统的格式?i、 e.为什么句子后面有逗号而不是

无论如何,这是spacy所要求的格式。 我曾尝试创建一个字典,然后将json.dump放入一个json对象,这要简单得多,但需要的是一个数组

我看过这篇文章:并尝试过建设性地迭代,但我只是得到了一个无效的语法错误

spans = []
for mention in mentions:
    mention = str(mention)
    for f in re.finditer(subj, mention): 
        spans.append(f.span())
train_data = [{mention, "entities": (f.span()[0], f.span()[1], 'PLTF')} for mention, span in zip(mentions, spans)]
编辑:使用json.load(),TEST_DATA[0][1](我想要的结构)产生与TRAIN_DATA[0][1]几乎相同的结果,除了在dict内部有额外的()之外。我很确定这是我得到这个错误的罪魁祸首:TypeError:'int'对象不可iterable。那么我该如何插入它呢?如果我只是在它周围加上一个额外的(),python就会解析它并将其删除

已解决:只需多放一个[]


谢谢

实际上,您需要的是一个str元组列表作为第一个元素,dict作为第二个元素。只需加上更多的括号,并移动你的咖喱括号

train_data = [(mention, {"entities": (f.span()[0], f.span()[1], 'PLTF')}) for mention, span in zip(mentions, spans)]

什么是错误?syntaxerror指向:在“entities”确定后,我停止获取语法错误,但仍然得到此错误
“str”对象不支持项分配
。我认为主要的问题是数组或至少部分数组被读取为字符串。这部分(f.span()[0],f.span()[1],“PLTF”)是什么??我只得到[0,9,“PLTF”],里面没有括号。还有一堆应该有()的地方有一个[]。我不确定是否可以在不破坏编码编辑的情况下简单地替换它们:使用json.load(),TEST_DATA[0][1](我想要的结构)产生与TRAIN_DATA[0][1]几乎相同的结果,除了额外的()在dict的内部。当我得到这个错误时,我很确定这是罪魁祸首:
TypeError:'int'对象是不可编辑的
。那么我该如何插入它呢?如果我只是在它周围加上一个额外的(),python就会解析它并将其删除