2012-06-07 81 views
0

在字典內部添加數組,在更多數組內。在字典裏面添加數組,在更多數組裏面?

我問了一個問題,Jakebird451幫了我。但我現在問題最多。

fruits = [{ 
    'name':"apple", 
    'color':["red","green"], 
    'weight':1 
}, { 
    'name':"banana", 
    'color':["yellow","green"], 
    'weight':1 
}, { 
    'name':"orange", 
    'color':"orange", 
    'weight':[1,2] 
}, { 
    'name':"pear", 
    'color':"orange", 
    "size" : [ 
        { 
         "weight" : 4, 
         "mass" : 1.6 
        }, 
        { 
         "weight" : 4, 
         "mass" : 2 
        }, 
        { 
         "weight" : 4, 
         "mass" : 2.5 
        } 
       ] 
}] 

如果有另一個字典與另一個數組該怎麼辦? 我如何使用此功能來獲得重量和質量?

def findCarByColor(theColor): 
    array=[] 
    for x in carList: 
     if theColor in x['Color']: 
      array.append(x['name']+" "+x['weight']) 
    return array 
print findit2("red") 
+0

我回滾了你的問題。你的編輯沒有意義。你問了一個新問題:「如果數字大於'東西',則打印出'東西'大於'數字'的水果名稱和顏色。你不能有'number'大於'stuff'的條件,然後在'stuff'大於'number'時打印答案!請提出一個新問題,並考慮您正在測試的條件。 – gauden

回答

1

如果要處理這兩種情況,假設你有變量fruits如問題:

def findItByColor(theColor): 
    array=[] 
    for x in fruits: 
     if theColor in x['color']: 
      try: 
       array.append(x['name']+" "+ str(x['weight'])) 
      except KeyError: 
       size = ' '.join([ '[Weight %s Mass %s]' 
            % (str(item['weight']),str(item['mass'])) 
         for item in x['size'] ]) 
       array.append(x['name']+" "+ size) 
    return array 

print findItByColor("orange") 

此打印:

['orange [1, 2]', 'pear [Weight 4 Mass 1.6] [Weight 4 Mass 2] [Weight 4 Mass 2.5]'] 

雖然這個查詢:

print findItByColor("green") 

退貨:

['apple 1', 'banana 1'] 
0

它看起來像你已經在你的字典中的「大小」鍵的重量和質量元素。

您的代碼將需要進行相應的修改:

def findCarByColor(theColor): 
    array=[] 
    for x in carList: 
     if theColor in x['Color']: 
      array.append(x['name']+" "+x['size']['weight'] +" "+x['size']['mass']) 
    return array 
print findit2("red") 

然而,這隻會爲你的「鴨梨」例如工作,因爲途中要存儲的權重值是不相符的。

編輯:

你不斷地改變你的榜樣,這意味着findCarByColor()的代碼需要改變過你的基礎數據結構。

我建議

  1. 拖住你需要存儲
  2. 標準化您的數據結構,什麼樣的數據。爲什麼「梨」字典有一個大小列表,但其他字典沒有?通過儘可能保持數據的簡潔和一致,您可以更簡單地操作它(如同在函數中一樣)。
+0

'尺寸'鍵不在所有字典中。也許你應該先檢查一下? – dm03514

+0

如果大小是必須是某個數字的值,那麼該怎麼辦。一切都比1 –

+0

@thebiggerchadder在這種情況下,你可以在第一個下添加第二個if語句,就像x ['size'] ['weight']> 1 – dckrooney

相關問題