我有一个默认的字典,看起来像:
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
我知道代码的最后一部分是不正确的,因此我需要帮助才能使该部分正常工作。有人可以请我帮忙解决一下我所缺少的内容,以获得如上所述的修改后的新字典。
答案 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()}