for k, v in d.iteritems():
if type(v) is dict:
for t, c in v.iteritems():
print "{0} : {1}".format(t, c)
Run Code Online (Sandbox Code Playgroud)
我正在尝试遍历字典并打印出值不是嵌套字典的所有键值对.如果值是字典,我想进入它并打印出其键值对...等.有帮助吗?
编辑
这个怎么样?它仍然只打印一件事.
def printDict(d):
for k, v in d.iteritems():
if type(v) is dict:
printDict(v)
else:
print "{0} : {1}".format(k, v)
Run Code Online (Sandbox Code Playgroud)
完整测试案例
字典:
{u'xml': {u'config': {u'portstatus': {u'status': u'good'}, u'target': u'1'},
u'port': u'11'}}
Run Code Online (Sandbox Code Playgroud)
结果:
xml : {u'config': {u'portstatus': {u'status': u'good'}, u'target': u'1'}, u'port': u'11'}
Run Code Online (Sandbox Code Playgroud) 我正在从 JSON 格式的 API 批量接收数据。我希望仅将值存储在列表中。
原始数据看起来像这样,并且总是像这样,即: all {...} 看起来像第一个示例:
data = content.get('data')
>>> [{'a':1, 'b':{'c':2, 'd':3}, 'e':4}, {...}, {...}, ...]
Run Code Online (Sandbox Code Playgroud)
嵌套字典使这变得更加困难;我也需要这个解压。
这是我所拥有的,它有效,但感觉很糟糕:
unpacked = []
data = content.get('data')
for d in data:
item = []
for k, v in d.items():
if k == 'b':
for val in v.values():
item.append(val)
else:
item.append(v)
unpacked.append(item)
Run Code Online (Sandbox Code Playgroud)
输出:
>>> [[1,2,3,4], [...], [...], ...]
Run Code Online (Sandbox Code Playgroud)
我该如何改进?