[英]Get dict item without knowing its parent (Python)
在不知道其父項的情況下如何獲取字典項?
例如。
dict = {
'parent': {
'name' : 'example name',
'version': 99
}
}
我想要的是獲取版本值,但是父項在每個請求中都會更改。
我想做一些類似dict [*] ['version']的事情,表示“任何值”。
那可能嗎?
您可以使用 發電機 如果我正確理解問題,請列出理解以獲取值:
versions = [dictionary_name[dict_item]['version'] for dict_item in dictionary_name]
要么
versions = [dict_value['version'] for dict_value in dictionary_name.values()]
盡管我沒有進行測試以檢查其是否有效。
PS:我認為您使用的是錯誤的數據模型。
您可以通過列表理解來做到這一點:
>>> versions = [dict[p]['version'] for p in dict]
>>> versions
[100]
它看起來像設計不良的數據模型,但這可能應該做您想要的:
{ 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}
您可以使用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)
您可以使用條件列表推導來獲取所有具有版本密鑰的子元素的版本:
[dict[key]["version"] for key in dict if "version" in dict[key]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.