2016-12-21 2 views
-2

Это безумно расстраивает, и я был на всем пути, пытаясь найти это.Flask и Python возвращают заархивированный список

Моя проблема заключается в том, что я не могу напечатать два моих списка - имена команд и точки - рядом друг с другом.

Когда я печатаю (см. Код), он правильно печатает вывод терминала.

Когда я возвращаю то же самое, я просто получаю команду последнего места!

@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 

Я хочу, чтобы вернуть то, что печатается в терминал, сайт !!!

Пожалуйста, дайте мне знать любые идеи!

Пожалуйста, помогите.

+0

Посмотрите еще раз на свой код: вы возвращаетесь только (t, p), что является конечным значением вашего цикла, а не для всего элемента из цикла for. – pbuck

+0

Возвращаясь к моему предыдущему комментарию [ЗДЕСЬ] (http://stackoverflow.com/a/41268356/2063361). * Существует разница между тем, что вы печатаете, и тем, что вы возвращаете через Flask *. Все, что вам нужно сделать, это 'jsonify (dict (zip (teamnames, points))). И этот ответ, который я уже упомянул в предыдущем посте –

ответ

0

Вы возвращаетесь именно то, что Вы видите:

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

Это позволит создать словарь только один пункт в нем (с ключом t и значением p, значения которых остались от предыдущего цикла for).

Предлагаю создать словарь сначала, перейдя по zip-спискам, а затем отправив этот dict на jsonify. Кое-что вроде:

return_dict = {} 
for t, p in zip(teamnames, points): 
    return_dict[t] = p 
return jsonify(return_dict) 
Смежные вопросы