2016-12-20 58 views
1

我有以下一段代碼:的Python:獲得可變退出循環

for response_i in response['response']: 

    var_1=None 
    if response_i['objkey'] == 'explorecube_data': 
     var_1=response_i['objcontent'][0]['title'] 
    if response_i['objkey'] == 'explorecube_data' and response_i['objcontent'][0]['title'] == var_1: 
    print(var_1) 

    dim_1=None 
    if response_i['objkey'] == 'explorecube_dimvalues': 
     dim_1=response_i['objcontent'][0]['title'] 
    if response_i['objkey'] == 'explorecube_dimvalues' and response_i['objcontent'][0]['title'] == dim_1: 
     print(dim_1) 

    ab=[var_1, dim_1] 
    print(ab) 

我更新的問題。 以下是輸出:

['tos', None] 
[None, None] 
[None, 'lat'] 
[None, None] 

我想有以下輸出:

['tos', 'lat'] 

我明白任何建議來解決這個問題

+0

'response ['response']'包含什麼? – DeepSpace

+0

使用複製和粘貼來輸入代碼,以確保縮進符合您的要求。您的原創[如需要](http://ideone.com/TeL9eM)。 – molbdnilo

+0

這個問題已經更新。 –

回答

0

嘗試這樣的事情,應該轉換數據轉換成熊貓數據幀並丟棄無值

import pandas as pd 


data = [] 

data.append([var_1, dim_1]) 

df = pd.DataFrame(data, columns=['var_1', 'dim_1']) 
df = df.dropna(how = 'all') 
2

使用生成器生成您想要的結果,然後將其打印出來。

def PrintGen(): 
    for response_i in response['response']: 
     if response_i['objkey'] == 'explorecube_data' or response_i['objkey'] == 'explorecube_dimvalues': 
      yield response_i['objcontent'][0]['title'] 
ab =PrintGen() 
listab =list(ab) 
print(listab) 

發電機用於產生滿足需求的物體,它們適合您。

0

當值不是None時,您可以簡單地將值追加到ab。然後,您需要在循環的外部實例化並打印ab

ab = [] 
for response_i in response['response']: 
    var_1=None 
    if response_i['objkey'] == 'explorecube_data': 
     var_1=response_i['objcontent'][0]['title'] 
    if response_i['objkey'] == 'explorecube_data' and response_i['objcontent'][0]['title'] == var_1: 
    print(var_1) 
    ab.append(var1) 

    dim_1=None 
    if response_i['objkey'] == 'explorecube_dimvalues': 
     dim_1=response_i['objcontent'][0]['title'] 
    if response_i['objkey'] == 'explorecube_dimvalues' and response_i['objcontent'][0]['title'] == dim_1: 
     print(dim_1) 
     ab.append(dim1) 

print(ab)