Python:在dict中组合"if'x'"和"在dict中组合我"['x']

Mar*_*ark 6 python json

真的有两个问题:如果我有一个字典(最初来自解析json消息),其中有一个可选数组:

dict_with = {'name':'bob','city':'san francisco','kids': {'name': 'alice'} }
dict_without = {'name':'bob','city':'san francisco' }
Run Code Online (Sandbox Code Playgroud)

我通常会有以下代码:

if 'kids' in dict:
   for k in dict['kids']:
      #do stuff
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是有没有任何python方法来组合if保护和for循环?

第二个问题是我的直觉告诉我原始json消息的更好设计是始终指定kids元素,只需要一个空字典:

dict_better = {'name':'bob','city':'san francisco','kids': {} }
Run Code Online (Sandbox Code Playgroud)

我找不到任何可以证实这一点的设计方法.json消息是来自支持json和xml表示的Web服务的状态消息.由于它们以xml开头,因此它们使得"kids"元素是可选的,这迫使上面的构造在迭代数组之前检查元素是否存在.我想知道在设计方面是否更好地说元素是必需的(如果没有元素,只需要一个空数组).

rob*_*ert 10

for x in d.get("kids", ()):
    print "kid:", x
Run Code Online (Sandbox Code Playgroud)


Ign*_*ams 7

空序列不会导致迭代.

for k in D.get('kids', ()):
Run Code Online (Sandbox Code Playgroud)