2014-05-14 139 views
0

我有一个JSON列表:如何解析json列表?

tcp_packet = {'green': [], 'red': [{'arm_id': 2, 'pptl_id': [1]}, {'arm_id': 1, 'pptl_id': [1]}]} 

我需要检查在“红色”是否存在arm_id?

目前我必须围绕tcp_packet['red']找出arm_id = 2是否存在?

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

是否有单线解决方案呢?

+0

是'单行'的要求吗? – hexparrot

回答

0
do_something() if 2 in [x.get('arm_id') for x in tcp_packet['red']] else None 
+0

我知道列表理解。但是如果不使用循环就不能完成这项工作吗? – PythonEnthusiast

+0

你必须遍历tcp_packet ['red']的值,因为它是一个列表 –

+0

我已经修复了2在if语句中是一个整数而不是字符串。 –

0

从你的问题来看有点不清楚,但这是你在找什么?

>>> 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