【发布时间】:2017-07-29 15:01:26
【问题描述】:
我有以下 csv
id, o1, o2, o3
'jess', 1.0, 4, 0.3
'jill', 0, 5, 0.123
'jamie', -3, 0.2, 1.0
并希望它在嵌套的 json 中,每列作为 json 键在标题名称上:
myjson = {
"o1": {"jess": 1.0, "jill": 0, "jamie": -3},
"o2": {"jess": 4, "jill": 5, "jamie": 0.2},
"o3": {"jess": 0.3, "jill": 0.2, "jamie": 1.0},
不确定执行此操作的最佳(最 Pythonic)方法。这是我的第一次尝试:
import csv
with open(myfile, "r") as f:
reader = csv.reader(f, delimiter=',', quotechar='"')
first = True
for line in reader:
if first:
myjson = {key: dict() for key in line}
header = list(line)
first = False
for i in range(len(header)):
id = line[0]
myjson[header[i+1]][id] = line[i+1]
我认为有更好的方法来做到这一点。
编辑: 早该指定,但我不想使用 Pandas 之类的东西。这需要以最小的包依赖性超快。
【问题讨论】:
-
Please find the answer here, 希望对您有所帮助。
-
@Bhargav 抱歉,这不是答案。该答案是获取每一行并制作一个以列名为键的字典。我正在尝试获取每一列并在该行的第一个条目上创建一个 dict。