相关疑难解决方法(0)

循环遍历所有嵌套字典值?

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)

python dictionary

93
推荐指数
7
解决办法
18万
查看次数

解压嵌套字典的更简洁方法

我正在从 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)

我该如何改进?

python dictionary

2
推荐指数
1
解决办法
6738
查看次数

标签 统计

dictionary ×2

python ×2