如何创建自定义嵌套字典

问题描述

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

original=
    {
      'cat': [
        18.919298,20.39386,14.010526,16.508772,15.34386
      ],'dog': [
        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,35.930303,35.930303
      ],'pythons': [
        18.399561,18.399561,28.431798,19.839735,22.66557,20.986842,18.674232,18.248904
      ]
    }

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

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

我正在尝试这样的事情:

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

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

解决方法

改为尝试dict comprehension

result = [1,2,3]

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

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

您可以就地修改字典:

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()}