向嵌套字典添加条目(再次)

时间:2015-04-30 22:21:06

标签: python dictionary

我确实在循环中生成数据,我可以使用Alex Martelli从SO thread得到的答案将数据转换为字典:

import collections

def update(d, u):
    for k, v in u.iteritems():
        if isinstance(v, collections.Mapping):
            r = update(d.get(k, {}), v)
            d[k] = r
        else:
            d[k] = u[k]
    return d

只要值存储在列表中并且最后一个键不会出现多于一个,此解决方案就可以正常工作:

该函数可用于构造嵌套字典:

import numpy as np
from collections import OrderedDict

dummy_data = np.arange(5,7,1)
pH = np.arange(4,5,1)
salt = np.arange(10,11,1)
names = ['k','l','m']
my_dict = OrderedDict()
a = []
b = []

for i in pH:
    for ii in salt:
        for iii in dummy_data:
            result_1 = 1*iii
            result_2 = 10*iii
            a.append(result_1)
            b.append(result_2)
        u = {i:{ii:{'a':a, 'b': b}}}
        update_dict(my_dict,u)

只要在最后一个循环中未调用update_dict,此方法就可以正常工作。输出是:

OrderedDict([(4, {11: {'a': [5, 6], 'b': [50, 60]}})])

有没有办法将数据点添加到字典中而没有删除条目的危险?同时,如果出现新密钥,则应添加它们。

什么行不通:

for i in pH:
    for ii in salt:
        for iii in dummy_data:
            result_1 = 1*iii
            result_2 = 10*iii
            u = {i:{ii:{'a':result_1, 'b': result_2}}}
            update_dict(my_dict,u)

0 个答案:

没有答案