Python从嵌套字典中获取值,只要找到给定的键

2024-05-09 04:53:01 发布

您现在位置:Python中文网/ 问答频道 /正文

希望在嵌套字典给定键的地方获取值。示例

fruit_details = {
    "FruitDetails": {
        "Details": {
            "apple": 5488,
            "orange": 100,
            "melon": 4612,
        },
        "id": "AG023760IHP083993",
        "Result": {
            "statusCode": "S-1",
            "message": "Successfully"
        }
    }

}
get_value(fruit_details, 'statusCode')

它必须返回"S-1"。你知道吗

我无法反复阅读这本词典。它在第一次迭代时中断。你知道吗

def get_value(d, k):
    if k in d.keys():
        return d[k]
    for key, value in d.iteritems():
        if isinstance(value, dict):
            item = get_value(value, k)
    return item
get_value(d, 'statusCode')

Tags: in示例applegetreturnif字典value
2条回答

如果您试图查找的值不是包含双引号(")的字符串(希望是合理的),那么可以使用regex在JSONified字典中搜索键,并返回相应的值。你知道吗

import re
import json

def get_value(d, key):
    try:
        # for python-2.x, use,
        # return re.search(r'"{k}": "(.*?)"'.format(key), json.dumps(d)).group(1)
        return re.search(f'"{key}": "(.*?)"', json.dumps(d)).group(1)
    except AttributeError:  # no match
        return np.nan 

get_value(fruit_details, 'statusCode')
# 'S-1'

即使找不到物品,你也在试图退货。试试这个:

def get_value(d, k):
    if k in d.keys():
        return d[k]
    for key, value in d.items():
        if isinstance(value, dict):
            item = get_value(value, k)
            if item: return item

顺便说一句,我使用的是python3,所以我使用了d.items()而不是d.iteritems()。你知道吗

相关问题 更多 >