获取dict项而不知道它的父级(Python)

时间:2015-12-13 21:38:52

标签: python dictionary

如何在不知道其父级的情况下获取dict项目?

例如

dict = { 
    'parent': {
        'name' : 'example name',
        'version': 99
    }    
}

我想要的是获取版本值,但项会在每个请求中更改。

我想做一些像dict [*] ['版本'],表示"任何值"。

这可能吗?

5 个答案:

答案 0 :(得分:0)

如果我正确理解了问题,您可以使用 generator 列表解析来获取值:

versions = [dictionary_name[dict_item]['version'] for dict_item in dictionary_name]

versions = [dict_value['version'] for dict_value in dictionary_name.values()]

虽然我没有通过测试运行来检查它是否有效。

PS:如果这是你的使用模式,我认为你正在使用错误的数据模型。

答案 1 :(得分:0)

您可以使用列表解析来执行此操作:

>>> versions = [dict[p]['version'] for p in dict]
>>> versions
[100]

答案 2 :(得分:0)

它看起来像设计糟糕的数据模型,但这应该可以做你想要的:

{ k:v for level2 in d.itervalues() for k,v in level2.iteritems() }

请注意,在@senshin提到的情况下,您将获得一个随机选择的值:

>>> d = {'foo': {'version': 1}, 'bar': {'version': 2}}
>>> { k:v for level2 in d.itervalues() for k,v in level2.iteritems() }
{'version': 2}

答案 3 :(得分:0)

您可以使用dict.values()枚举字典的值,完全忽略其键。

_dict = { 
    'parent': {
        'name' : 'example name',
        'version': 99
    }    
}

# get the first version you find
for val in _dict.values():
    if val.get('version'):
        print(val['version'])
        break

# get all the versions
versions = [val['version'] for val in _dict.values() if 'version' in val]
print(versions)

答案 4 :(得分:0)

您可以使用条件列表推导来获取具有版本密钥的所有子元素的版本:

[dict[key]["version"] for key in dict if "version" in dict[key]