查找内部阵列

问题描述:

阵列特定变量我想,如果它包含一个变量“富”查找内部阵列

details={u'firstName': u'Test', u'activeSubscriptions': [{u'productCode': u'BBB', u'name': u'Bar'}, {u'productCode': u'FFF', u'name': u'Foo'} 

我已经这样做了搜索的数组:

subscriptions_name = data['activeSubscriptions'][0]['name'] 

但这只是作品为数组中的第一个数据。

如果数据未一致放置,我怎么能得到FFF的名字?

+0

它是否必须是'FFF'或者你想检查'name'的值''在'activeSubscriptions'中的所有'dicts'? – 2014-09-02 07:56:09

+0

它必须是'FFF'。 – 2014-09-02 09:37:23

+0

请注意,它不是一个数组,而是一个“字典”。 – wRAR 2014-09-23 04:41:46

如果你是productCodeactiveSubscriptions阵列搜索,你正在寻找这个:

>>> details={'firstName': 'Test', 'activeSubscriptions': [{'productCode': 'BBB', 'name': 'Bar'}, {'productCode': 'FFF', 'name': 'Foo'}]} 
>>> product_code_search_key = 'FFF' 
>>> for subscription in details['activeSubscriptions']:   
...  if subscription and subscription.get('productCode','') and subscription['productCode'] == product_code_search_key: 
...   print subscription['name'] 
...   break 
... 
>>> Foo 

您可以递归压扁你的清单,里面搜索:

def flatten(l): 
    res = [] 
    for e in l: 
     if type(e) is dict: 
      tmp = e.values() 
      res += flatten(tmp) 
     elif type(e) is list: 
      tmp = e[:] 
      res += flatten(tmp) 
     else: 
      res += e 
    return res 

if "Foo" in flatten(list) 

编辑:出于性能原因,不需要计算阵列和里面搜索。继版本,只是搜索的数组中:

def is_in_superlist(l, m): 
    for e in l: 
     if type(e) is dict: 
      return is_in_superlist(e.values(), m) 
     elif type(e) is list: 
      return is_in_superlist(e, m) 
     else: 
      if e == m: 
       return True 
    return False 

is_in_superlist(list, "Foo")    

你可以遍历dictonary的阵列和acheive像下面

details={'firstName': 'Test', 'activeSubscriptions': [{'productCode': 'BBB', 'name': 'Bar'}, {'productCode': 'FFF', 'name': 'Foo'}]} 

for i in details['activeSubscriptions']:   
    if 'Foo' in i.values(): 
     print i