如何创建自定义嵌套字典

时间:2020-08-11 08:08:50

标签: python dictionary

我有一个默认的字典,看起来像:

original=
    {
      'cat': [
        18.919298,
        20.39386,
        20.39386,
        14.010526,
        16.508772,
        16.508772,
        15.34386
      ],
      'dog': [
        24.716667,
        24.716667,
        24.716667,
        21.563121,
        21.563121
      ],
      'wolf': [
        15.761111,
        15.761111,
        15.761111
      ],
      'tiger': [
        7.961111,
        7.055556,
        70.988889,
        35.527778
      ],
      'elephant': [
        37.386364,
        28.289394,
        28.289394,
        35.930303,
        35.930303
      ],
      'pythons': [
        18.399561,
        18.399561,
        28.431798,
        28.431798,
        19.839735,
        22.66557,
        20.986842,
        18.674232,
        18.674232,
        18.248904
      ]
    }

现在,我想执行一些操作,该操作返回一个列表,现在我希望我的最终字典看起来像

  'cat': { 'original':[
              18.919298,
              20.39386,
              20.39386,
              14.010526,
              16.508772,
              16.508772,
              15.34386
            ],
            'result':[
            1,
            2,
            3,
            ]
  },
 . 
 .

我正在尝试这样的事情:

modified_dict = {}
for key,value in original.items(): 
    result = [1,2,3] # Assume that a function returns me the data here as dict
    modified_dict[rrd]['original']=values
    modified_dict[rrd]['result'] = result

我知道代码的最后一部分是不正确的,因此我需要帮助才能使该部分正常工作。有人可以请我帮忙解决一下我所缺少的内容,以获得如上所述的修改后的新字典。

2 个答案:

答案 0 :(得分:0)

改为尝试dict comprehension

result = [1,2,3]

{k : {"original": v, "result": result} for k, v in original.items()}

{'cat': {'original': [18.919298,
                      20.39386,
                      20.39386,
                      14.010526,
                      16.508772,
                      16.508772,
                      15.34386],
         'result': [1, 2, 3]},
 'dog': {'original': [24.716667, 24.716667, 24.716667, 21.563121, 21.563121],
         'result': [1, 2, 3]},
...
}

答案 1 :(得分:0)

您可以就地修改字典:

for key in original:
    original[key] = {'original': original[key], 'result': ...}

或者您可以通过制作新字典来做到这一点:

modified = {}
for key, value in original.items():
    modified[key] = {'original': value, 'result': ...}

在两种情况下,都需要为每个值创建一个新的嵌套字典。

如果您具有返回结果的键和值的功能,则可以将后者写成一个理解:

modified = {key: {'original': value, 'result': func(key, value)} for key, value in original.items()}