延續上一篇專案,我接下來想要在app上顯示不同筆的資料
例如我想抓weather裡面的main,結果顯示應該為rain,正在下雨。
但如果我想換成抓main裡面的資料時,像是temp、temp_max、remp_min等等,就會出現錯誤
例如我想抓main裡面的temp(現在溫度),我把積木換成下圖方式,則結果就會出現錯誤訊息
似乎是一個不好的形式「not a well-form」....
吳奇峯老師建議我把list拿掉,讓它直接去抓字典裡的資料後顯示在標籤2,所以我們就來試試看!
PS:是不是中文的表示比較好懂?
問題就解決囉!
感謝吳老師還在晚上傳了很多關於字典的應用知識給我閱讀!
附上吳老師的youtube頻道:奶爸的教育
接著又出現了第二個問題!
如果我想要顯示天氣與氣溫的資訊,
如果我不將List加回原本的weather中,那還是會出現錯誤,所以就變成以下圖的方式,weather的部分依然要用list,但天氣的main就不需要,這樣就成功囉
所以到底是為什麼呢?
好吧,我們必須要了解兩件事情,第一件事情是字典,第二件事情JSON表現資料的型態。
第一件事情:Python中的字典用法主要是在表現資料型態,就如同我們對「字典」的認知,字典就是用來做查詢的工作,我不分享太詳細的內容,我就單以這個專題會需要的知識來考量
參考連結:Python字典基礎與16種操作
字典有三個主要成分:項目(item)、鍵(Key)和值(Value),分別用大括弧包起來。
以下圖為例字典weather有四個項目,每個項目用逗點隔開,並用大括弧包起來。每個項目中的鍵與值使用冒號隔開。
另外,當你仔細看整個城市的資訊時,我們會發現其實幾個規則,第一個規則是鍵(Key)它必須是不可變的資料型態,通常都是字串,值(Value)可以是任何資料型式。
另外,字典中可以再包字典,意思是說它可以疊加。以下圖為例,如果先抓出逗點的位置,我們會發現紅框中的的字串,例如coord、weather、base、main等都是鍵(Key),冒號隔開的右邊都是值(Value),但是有些值(Value)也是另一組字典型態,當出現這樣的情況時,鍵(Key)又會變成字典,例如weather、main、wind等,這就是字典疊加的意思。
有了基本的知識後,接著我們來看JSON如何表達這些資訊,附上參考連結:在Python終將JSON轉為字典。眼尖的你是否有發現上圖的weather多了 [ ] 中括號。在JSON中無論是在哪裡遇到 [ ]中括號,它都會將資料作為列表(list)讀取,{ }大括號為字典,所以最終型別是會在字典中。
這就是為什麼我們在app inventor要使用list讀取字典weather的資料後,用index拉出我們要的內容,而在main中只需要疊兩層字典即可的原因了
以上,我們就了解這些問題背後的原因,也成功地抓到我們想要的資料
接下去就是將資料透過藍芽傳送到ePy-Lite上。