如何在不知道其父级的情况下获取dict项目?
例如
dict = {
'parent': {
'name' : 'example name',
'version': 99
}
}
我想要的是获取版本值,但父项会在每个请求中更改。
我想做一些像dict [*] ['版本'],表示"任何值"。
这可能吗?
答案 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]