根据JSON文件的元素制作列表

时间:2019-09-26 19:02:36

标签: python json

我想从JSON文件(https://www.dropbox.com/s/woxtqy634g89f0r/tags.json?dl=0)中列出三个不同的列表,例如A,B和C:

A: (13,13,...,37)
B: (12,14,...,32)
C: ([-1.3875, 1.3875, -1.95 ], [[-2.775, -0., -0., ], .., [-0., 2.775, -0. ]])

有什么快速而聪明的方法吗?

我在jupyter-notebook中尝试过

with open('tags.json', 'r') as f:
    tags = json.load(f)
tags['neb.00']

输出将给我

  

'13-> 12 0.2906332796567428 [-1.3875 1.3875 -1.95]'

然后我可以执行类似tags['neb.03'][0:2]的操作来获取13,依此类推。但这不是一个好方法,我希望有一个正确的方法。有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

for k,v in data.items():
    A =v[:v.index('-')]
    B =v[v.index('>')+1:v.index('[')]
    C =v[v.index('[')::]
    print(k,A,B,C)

.items()遍历字典键(k)和值(v)

我不知道这是否是您要寻找的答案,但查看您的数据,看来它具有稳定的结构。我想您可以将每个值附加到列表中。

答案 1 :(得分:0)

import json
import re

with open('tags.json', 'r') as f:
    tags = json.load(f)

A = []
B = []
C = []
for x in sorted(tags.keys()):
    m = re.search(r'(\d+)->(\d+) (\d+\.\d+) \[(.+)\]', tags[x])
    if not m:
        print("Not matching:", tags[x])
        continue
    A.append(int(m.group(1)))
    B.append(int(m.group(2)))
    C.append([float(y) for y in m.group(4).split()])

sorted()或其他函数,如果您需要确定性地订购商品。