首页 > 解决方案 > 想要从 csv 文件创建键值对列表但无法

问题描述

我想用 /getService 路由的输出创建一个键值对列表。

我能够从 csv 文件 vet_service_locations 中过滤我想要的数据(郊区和服务),但希望将其作为键值对。关键是郊区,服务和价值将是相关的输出。

我是初学者,尝试了不同的方法,但似乎没有任何效果。

from bottle import html_quote, route, run, template, response, request
import petl as etl
from json import dumps
import csv


output = []

reading_file = etl.fromcsv('vet_service_locations.csv')
print(reading_file)


@route('/getServices')
def details():
    postcode = request.query.postcode
    print(postcode)
    for row in reading_file:
        if row[2] == postcode:
            output.append(row[1])
            output.append(row[4])
            
    print(output)
        
    

run(host='localhost', port=3000, debug=True)

Vet_service_location.csv 数据图像在此链接中

我得到的输出

[('Adelaide', 'Small_Animal'), ('Adelaide', 'Oncology'), ('Adelaide', 'Surgery'), ('Adelaide', 'Annual_Checkup'), ('Adelaide', 'Wildlife')]

我想要的输出

 suburb, values 
[('Adelaide', 'Small_Animal'),  
('Adelaide', 'Oncology'),  
('Adelaide', 'Surgery'),  
('Adelaide', 'Annual_Checkup'),  
('Adelaide', 'Wildlife')]

所以,有点像表格,与 vet_service_locations.csv 的结构相同。

标签: pythonpython-3.xlistbottlepetl

解决方案


如果你想output成为一个以郊区为键、服务为值的键值对列表,那么你应该替换这些行

output.append(row[1])
output.append(row[4])

output.append((row[1], row[4]))这样,这output是一个元组列表。

或者,您可能想制作output一本字典。为此,请将您的声明output = []替换output = {}为然后替换行

output.append(row[1])
output.append(row[4])

output[row[1]] = row[4].


推荐阅读