Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解析json列表?_Python_Json - Fatal编程技术网

Python 如何解析json列表?

Python 如何解析json列表?,python,json,Python,Json,我有一个json列表: tcp_packet = {'green': [], 'red': [{'arm_id': 2, 'pptl_id': [1]}, {'arm_id': 1, 'pptl_id': [1]}]} 我需要检查arm_id是否存在于“红色”中 目前,我必须循环查看tcp\u数据包['red'],以确定arm\u id=2是否存在 for i in tcp_packet[color]: if '2' in i.keys(): do something 这

我有一个json列表:

tcp_packet = {'green': [], 'red': [{'arm_id': 2, 'pptl_id': [1]}, {'arm_id': 1, 'pptl_id': [1]}]}
我需要检查arm_id是否存在于“红色”中

目前,我必须循环查看
tcp\u数据包['red']
,以确定
arm\u id=2
是否存在

for i in tcp_packet[color]:
   if '2' in i.keys():
       do something

这个问题有一个简单的解决方案吗?

你的问题有点不清楚,但这就是你想要的吗

do_something() if 2 in [x.get('arm_id') for x in tcp_packet['red']] else None
>>> tcp_packet = {'green': [], 'red': [{'arm_id': 2, 'pptl_id': [1]}, {'arm_id': 1, 'pptl_id': [1]}]}
>>> any((('arm_id', 2) in i.iteritems()) for i in tcp_packet['green'])
False
>>> any((('arm_id', 2) in i.iteritems()) for i in tcp_packet['red'])
True

我知道你的理解力。但是,如果不使用循环,就不能这样做吗?您必须通过tcp_数据包['red']的值进行循环,因为它是一个列表。在if语句中,我已将2固定为整数,而不是字符串。还可以使用x.get('arm_id'),这样,如果dict中没有arm_id,您就不会得到一个keyrerror。这是一个要求吗?