我想从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
,依此类推。但这不是一个好方法,我希望有一个正确的方法。有人可以帮我吗?
答案 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()或其他函数,如果您需要确定性地订购商品。