真的有兩個問題:如果我有一個字典(最初來自解析一個json消息),有一個可選的數組在它:Python:結合「如果'x'在字典中」和「爲我在字典['x']」
dict_with = {'name':'bob','city':'san francisco','kids': {'name': 'alice'} }
dict_without = {'name':'bob','city':'san francisco' }
我通常有這樣的代碼:
if 'kids' in dict:
for k in dict['kids']:
#do stuff
我的第一個問題是,有沒有什麼蟒蛇辦法的,如果保護和for循環結合起來?
第二個問題是我的直覺告訴我要原來的JSON消息的更好的設計是始終指定孩子元素,只是一個空的字典:
dict_better = {'name':'bob','city':'san francisco','kids': {} }
我找不到任何設計方法這證實了這一點。 json消息是來自支持json和xml表示的web服務的狀態消息。由於它們是從xml開始的,因此它們使得它的「kids」元素是可選的,這迫使上面的構造檢查在迭代數組之前是否存在元素。我想知道是否需要更好的設計來說明元素(如果沒有元素,只需使用空數組)。
對於任何不知道的人,'dict.get(key,default)'返回與'key'關聯的值(如果存在)或'default'(如果不存在)。 – DGH 2010-12-16 18:50:01
...並且'()'是空的元組。本能地,我會用'[]'去,但是沒有實際的區別。 – delnan 2010-12-16 18:51:35
@delnan很可能你的本能是使用[],因爲許多標準庫函數返回列表,而不管輸入序列類型如何(例如'sorted')。我的本能是喜歡(),因爲它記錄了我沒有做任何需要列表的結果的願望。 ;) – 2010-12-16 22:14:22