2014-05-14 111 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