Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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_Nested_Extract_Shortcut_One Liner - Fatal编程技术网

Python 为字典键显式赋值的最短(最优雅)方法

Python 为字典键显式赋值的最短(最优雅)方法,python,nested,extract,shortcut,one-liner,Python,Nested,Extract,Shortcut,One Liner,我有一个类似JSON的大数据源。我必须将许多嵌套的值提取到另一个字典中(从那里可以将其结构化,以便保存到DB…) 有问题的嵌套数据示例: ... {'SomeKindOfKey': [{ 'key1': value1, 'key2': value2, 'target_key': target_value, 'key4': value,

我有一个类似JSON的大数据源。我必须将许多嵌套的值提取到另一个字典中(从那里可以将其结构化,以便保存到DB…)

有问题的嵌套数据示例:

... 
{'SomeKindOfKey': [{ 'key1': value1,
                     'key2': value2,
                     'target_key': target_value,
                     'key4': value,
                     'key5': value5,
                     'key6': value6}]
...
通常,当我需要访问同一嵌套级别内的更多键时,我会这样做:

#  lower_dict           -> dict from lower level of nesting
#  collecting_dict      -> here I collect useful data

for nested_dict in lower_dict['SomeKindOfKey']:   
    collecting_dict = {
        "my-key1-in-db": nested_dict['key1'],
        "my-target-key-in-db": nested_dict['target_key'],
        ...}

然而,假设我只需要从特定的嵌套级别提取一个值。在这种情况下,for循环中的整个缩进对我来说就像是杀伤力过大。毕竟,我的代码已经开始超级缩进/嵌套(目前类似于4-5级缩进)

有没有适合我的短小、优雅的一句台词或练习?我不想写意大利面代码。

我可以用这种方式来想一些具体的事情:

collecting_dict = {
    "my-target-key-in-db": nested_dict['target_key'] for nested_dict in lower_dict['SomeKindOfKey'],
    ...}

“毕竟,我的代码已经开始超级缩进/嵌套(目前类似于4-5级缩进)”嗯,这似乎已经是个问题了。在任何情况下,通常您要做的是模块化您的程序,例如使用函数、类来避免此类事情