猿问

遍历 json 列表并使用 Python 获取特定的键和值

我有一个这样的 JSON 列表(这是一个 JSON 响应,下面是我做的之后json.loads)


[{'status': 'ok', 'slot': None, 'name': 'blah', 'index': 0, 'identify': 'off', 

'details': None, 'speed': None, 'temperature': None}, {'status': 'ok', 'slot': 

None, 'name': 'blah0', 'index': 0, 'identify': 'off', 'details': None, 

'speed': None, 'temperature': None}, {'status': 'ok', 'slot': None, 'name': 

'blah1', 'index': 1, 'identify': 'off', 'details': None, 'speed': None, 

'temperature': None}, {'status': 'ok', 'slot': None, 'name': 'blah2', 

'index': 2, 'identify': 'off', 'details': None, 'speed': None, 'temperature': 

None}, {'status': 'ok', 'slot': None, 'name': 'blah3', 'index': 3,

'identify': 'off', 'details': None, 'speed': None, 'temperature': None}]

我想这两个name和status如果列表中,name='blah' or 'blah0' or 'blah1' or 'blah2' or 'blah3' 从本质上讲,所有我想要存储的所有比赛name,并status在不同的变量在其他地方使用它。(可以动态创建变量或静态分配它们也适用于我)


我试过这个,但似乎不像我想要的那样工作。


for value in data:

   if value['name'] in ['blah', 'blah0', 'blah1', 'blah2', 'blah3']:

        print(value['name'], value['status'])

这会将name和status作为字符串打印在另一行下方。但我希望将每个名称和状态分配给一个变量,以便我以后可以使用它。任何帮助深表感谢!


达令说
浏览 480回答 2
2回答

皈依舞

您并不是真的想要动态变量,但您可以使用列表推导式。您还应该利用恒定成本集成员资格测试:keep = set(['blah', 'blah0', 'blah1', 'blah2', 'blah3'])result = [(value['name'], value['status']) for value in data if value['name'] in keep]print(result)输出:[('blah', 'ok'), ('blah0', 'ok'), ('blah1', 'ok'), ('blah2', 'ok'), ('blah3', 'ok')]如果你想要一本字典:keep = set(['blah', 'blah0', 'blah1', 'blah2', 'blah3'])result = {value['name']: value['status'] for value in data if value['name'] in keep}print(result)

青春有我

编辑 尝试类似:new_data = []# Extract all the data and map them by name and statusfor value in data:    name = value.get("name")    status = value.get("status")    if name in ['blah', 'blah0', 'blah1', 'blah2', 'blah3']:         new_data.append(dict(            name=name,            status=status))选项1# loop through the new datafor data in new_data:    print(data)# OUTPUT:{'name': 'blah', 'status': 'ok'}{'name': 'blah0', 'status': 'ok'}{'name': 'blah1', 'status': 'ok'}{'name': 'blah2', 'status': 'ok'}{'name': 'blah3', 'status': 'ok'}选项 2for data in new_data:    for key, value in data.items():        print(key, value)#OUTPUT:name blahstatus okname blah0status okname blah1status okname blah2status okname blah3status ok选项 3for data in new_data:        print(data['name'], data['status'])#OUTPUTblah okblah0 okblah1 okblah2 okblah3 ok
随时随地看视频慕课网APP

相关分类

Python
我要回答