如何附加到正确的深层嵌套列表?

时间:2015-05-11 03:28:50

标签: python list python-2.7 dictionary

我正在尝试拆分字符串列表并从这些字符串创建一个深度嵌套的字典(最内层的值是列表)。然后我需要在该列表中附加一个值。由于我的一些字符串是重复的,我需要识别正确的深层嵌套列表,以便我可以追加到它。例如:

QUnit.test( "hello test", function( assert ) {
  assert.ok( 1 == "1", "Passed!" );
});

1 个答案:

答案 0 :(得分:1)

我认为这可以满足您的需求。对于每条路径,请向前潜入主人并在必要时动态创建内容(使用setdefault):

d = {'mykey': 'myval'}
my_strings = ['key1_key2_key3', 'key54_key6_key85_key86', 
              'key1_key2_key3', 'key1_key2',
              'key54_key6_key85_key86', 'key103_key508_key2',
              ]
master_d = {}

for path in my_strings:
    tmp = master_d
    for key in path.split('_'):
        tmp = tmp.setdefault(key, {})
    tmp.setdefault('my_list', []).append(d)

from pprint import pprint
pprint(master_d)

输出,由非常有帮助的pprint生成:

{'key1': {'key2': {'key3': {'my_list': [{'mykey': 'myval'},
                                        {'mykey': 'myval'}]},
                   'my_list': [{'mykey': 'myval'}]}},
 'key103': {'key508': {'key2': {'my_list': [{'mykey': 'myval'}]}}},
 'key54': {'key6': {'key85': {'key86': {'my_list': [{'mykey': 'myval'},
                                                    {'mykey': 'myval'}]}}}}}