擅长:python、mysql、java
<p>现在的问题是,在列表理解中的迭代期间,第一次迭代将名称<code>dataset</code>从<code>dict</code>的意思改为<code>dict</code>的键(<code>dict</code>s迭代它们的键)。所以当你试图用<code>dataset['identifier']</code>在<code>dataset</code>中查找一个值,<code>dataset</code>不再是{<cd2>},而是你当前正在迭代的<code>str</code>键。在</p>
<p>停止重复使用同一个名字来表达不同的意思。在</p>
<p>从您发布的JSON中,您可能想要的是:</p>
<pre><code>with open('C:/test.json', encoding="latin-1") as f:
alldata = json.loads(f.read())
@app.route('/api/PDL/<string:dataset_identifier>', methods=['GET'])
def get_task(dataset_identifier):
# Gets the list of data objects from top level object
# Could be inlined into list comprehension, replacing dataset with alldata['dataset']
dataset = alldata['dataset']
# data is a single object in that list, which should have an identifier key
# data_for_id is the list of objects passing the filter
data_for_id = [data for data in dataset if data['identifier'] == dataset_identifier]
if len(task) == 0:
abort(404)
return jsonify({'dataset': data_for_id})
</code></pre>