簡體   English   中英

在不知道其父項的情況下獲取dict項(Python)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM