【问题标题】:Flask and Python return a zipped list [duplicate]Flask 和 Python 返回一个压缩列表 [重复]
【发布时间】:2016-12-21 20:07:12
【问题描述】:

这非常令人沮丧,我一直在互联网上试图找到它。

我的问题是我无法打印我的两个列表 - 团队名称和积分 - 彼此相邻。

当我打印(见代码)时,它会正确打印到终端输出。

当我返回完全相同的东西时,我只是获得了最后一名的球队!

@app.route('/League Standing', methods=['GET','POST'])
    def show_league():
        text = request.form['league']
        connection = httplib.HTTPConnection('api.football-data.org')
        headers = {'X-Auth-Token': 'key', 'X-Response-Control': 'minified'}
        connection.request('GET', '/v1/competitions/'+text+'/leagueTable', None, headers)
        response = json.loads(connection.getresponse().read().decode())
        teamnames = [r['team'] for r in response['standing']]
        points = [r['points'] for r in response['standing']]
        for t, p in zip(teamnames, points):
           print('{}: {}'.format(t,p))
        return jsonify('{}: {}'.format(t,p))




    if __name__ == '__main__':
        app.run(debug=True)

当我打印到终端时会发生以下情况:

Chelsea: 43
Liverpool: 37
ManCity: 36
Arsenal: 34
Spurs: 33
ManU: 30
Southampton: 24
West Bromwich: 23
Everton: 23
Bournemouth: 21
Stoke: 21
Watford: 21
West Ham: 19
Middlesbrough: 18
Foxes: 17
Burnley: 17
Crystal: 15
Sunderland: 14
Swans: 12
Hull: 12

当我打印到烧瓶网站时:

Hull: 12

我想将正在打印的内容返回到终端,网站!!!

请告诉我任何想法!

请帮忙。

【问题讨论】:

  • 再看看你的代码:你只返回 (t, p),这是你的循环的最终值,而不是 for 循环中的所有元素。
  • 回到我之前的评论HERE您打印的内容与通过 Flask 返回的内容之间存在差异。您需要做的就是jsonify(dict(zip(teamnames, points)))。而且,我在你之前的帖子中已经提到过这个答案

标签: python html flask


【解决方案1】:

你返回的正是你所看到的:

jsonify('{}: {}'.format(t,p))

这将创建一个字典,其中只有一项(键为t,值p,其值是从先前的for 循环中遗留下来的)。

我建议首先通过循环通过压缩列表创建字典,然后将该字典发送到jsonify。比如:

return_dict = {}
for t, p in zip(teamnames, points):
    return_dict[t] = p
return jsonify(return_dict)   

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 2020-06-04
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2019-06-01
    • 1970-01-01
    相关资源
    最近更新 更多