Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 存储字典级别不一致的键_Python_Design Patterns - Fatal编程技术网

Python 存储字典级别不一致的键

Python 存储字典级别不一致的键,python,design-patterns,Python,Design Patterns,代码的结构如下所示: def foo(dicc, cases): if cases==1: return dicc['a'] if cases==2: return dicc['b']['c'] dicc不可更改。我想消除像开关一样使用案例。我考虑过在函数之外创建一个字典,比如info={1:'a',2:'b'},然后调用dicc[info[cases]],但它对案例2不起作用。这是否意味着我必须为每个案例创建一个类?处理此问题的常见做法是什么?

代码的结构如下所示:

def foo(dicc, cases):
    if cases==1:
        return dicc['a']
    if cases==2:
        return dicc['b']['c']

dicc
不可更改。我想消除像开关一样使用
案例
。我考虑过在函数之外创建一个字典,比如
info={1:'a',2:'b'}
,然后调用
dicc[info[cases]]
,但它对案例2不起作用。这是否意味着我必须为每个案例创建一个类?处理此问题的常见做法是什么?

不确定这是否是您想要的,但您可以尝试一下

info=[['a'], ['b', 'c']]

def foo(dicc, cases):
    result = dicc
    for k in info[cases-1]:
        result = result[k]
    return result
应该把它移到