Python 从JSON文件的元素生成列表

Python 从JSON文件的元素生成列表,python,json,Python,Json,我想从JSON文件()中列出三个不同的列表,即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笔记本中尝试: with open('tags.json', 'r') as f: tags = json.load(f) tags['neb.00']

我想从JSON文件()中列出三个不同的列表,即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笔记本中尝试:

with open('tags.json', 'r') as f:
    tags = json.load(f)
tags['neb.00']
输出将给我

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


然后我可以做一些类似于
标记['neb.03'][0:2]
的事情来获得
13
等等。但这不是一个好的方法,我希望有一个正确的方法。有人能帮我吗

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()遍历dict键(k)和值(v)

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

.items()遍历dict键(k)和值(v)

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

导入json
进口稀土
将open('tags.json','r')作为f:
tags=json.load(f)
A=[]
B=[]
C=[]
对于排序中的x(tags.keys()):
m=重新搜索(r'(\d+)->(\d+)(\d+)\.\d+\[(.+)\]',标记[x])
如果不是m:
打印(“不匹配:”,标记[x])
持续
A.append(int(m.group(1)))
B.append(int(m.group(2)))
C.append([float(y)表示m.group(4.split()]中的y)
sorted()或其他函数,如果您需要以确定性方式对项目进行排序。

导入json
进口稀土
将open('tags.json','r')作为f:
tags=json.load(f)
A=[]
B=[]
C=[]
对于排序中的x(tags.keys()):
m=重新搜索(r'(\d+)->(\d+)(\d+)\.\d+\[(.+)\]',标记[x])
如果不是m:
打印(“不匹配:”,标记[x])
持续
A.append(int(m.group(1)))
B.append(int(m.group(2)))
C.append([float(y)表示m.group(4.split()]中的y)

sorted()或其他函数,如果您需要以确定性方式对项目进行排序。

“这不是执行“为什么不”的好方法?”这不是执行“为什么不”的好方法,谢谢@FMARAD。那正是我要找的。它解决了我的问题!嗨,事实上我意识到还有一点点东西还剩下。如果你看主要问题中的“C”,它实际上是一个列表,但我得到的是一个字符串,很明显像[-1.3875 1.3875-1.95],但我想要[-1.3875,1.3875,-1.95]。你能帮我一下吗?C.strip(“[]”)。split(“,”),不知怎么的,这对我不起作用。它只从[-1.3875 1.3875-1.95]变为['-1.3875 1.3875-1.95']。所以我刚上了我的电脑,C.strip(“[]”)。split(),但这会给你字符串列表,我想你可以处理它。谢谢@FMARAD。那正是我要找的。它解决了我的问题!嗨,事实上我意识到还有一点点东西还剩下。如果你看主要问题中的“C”,它实际上是一个列表,但我得到的是一个字符串,很明显像[-1.3875 1.3875-1.95],但我想要[-1.3875,1.3875,-1.95]。你能帮我一下吗?C.strip(“[]”)。split(“,”),不知怎么的,这对我不起作用。它只从[-1.3875 1.3875-1.95]变为['-1.3875 1.3875-1.95']。所以我刚上了我的电脑,C.strip(“[]”)。split(),但这会给你字符串列表,我想你可以操纵它。对我不起作用。告诉我:AttributeError:'NoneType'对象没有表示正则表达式不匹配的属性'group'。您的输入可能比您发布的示例更复杂。编辑以跳过不匹配的模式,以便您可以细化正则表达式。对我不起作用。告诉我:AttributeError:'NoneType'对象没有表示正则表达式不匹配的属性'group'。您的输入可能比您发布的示例更复杂。编辑以跳过不匹配的模式,以便可以优化正则表达式。