Python。将列表中的词典分组在一起,在lis中创建词典列表

2024-05-15 03:53:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张有多本字典的单子。有些字典我不需要。最后,我希望所有的字典里都有“start”键。此外,我希望其中包含“start”的dict组合在一起(在一个列表中),这样每次包含“start”的dict序列(或只出现一次“start”)都会被一个不包含“start”的dict中断,然后创建下一个包含“start”字典的列表,依此类推。你知道吗

[{'key_one': ‘value_one’, 'key_two': 'value_two'},
{'num': ‘1’, 'start': 's1’},
{'num': ‘2’, 'start': 's2’},
{'num': '3, 'start': 's3’},
{'num': '4', 'start': 's4’},
{'num': '5, 'start': ‘s5’},
{'num': '6, 'start': 's6’},
{'num': '7', 'start': 's7’ },
{'num': '8', 'start': 's8’},
{'num': '9', 'start': 's9’},
{'num': '10', 'start': 's10’},
{'key_one': ‘value_one’, 'key_two': 'value_two'},
{'num': '11', 'start': 's11’},
{'num': '12', 'start': 's12’},
{'num': '13', 'start': 's13’},
{'num': '14', 'start': 's14’},
{'num': '15', 'start': 's15’},
{'key_one': ‘value_one’, 'key_two': 'value_two'},
{'num': '16', 'start': 's16’},
{'num': '17', 'start': 's17},
{'num': '18', 'start': 's18}]

所以在这个例子中,输出应该是:

[[{'num': ‘1’, 'start': 's1’},
{'num': ‘2’, 'start': 's2’},
{'num': '3, 'start': 's3’},
{'num': '4', 'start': 's4’},
{'num': '5, 'start': ‘s5’},
{'num': '6, 'start': 's6’},
{'num': '7', 'start': 's7’ },
{'num': '8', 'start': 's8’},
{'num': '9', 'start': 's9’},
{'num': '10', 'start': 's10’}]

[{'num': '11', 'start': 's11’},
{'num': '12', 'start': 's12’},
{'num': '13', 'start': 's13’},
{'num': '14', 'start': 's14’},
{'num': '15', 'start': 's15’}]

[{'num': '16', 'start': 's16’},
{'num': '17', 'start': 's17},
{'num': '18', 'start': 's18}]]

谢谢你的帮助。你知道吗


Tags: key列表字典s3valueonestartnum
2条回答
old_list = [{'key_one': 'value_one', 'key_two': 'value_two'}, {'num': '1', 'start': 's1'}, {'num': '2', 'start': 's2'}, {'num': '3', 'start': 's3'}, {'num': '4', 'start': 's4'}, {'num': '5', 'start': 's5'}, {'num': '6', 'start': 's6'}, {'num': '7', 'start': 's7' }, {'num': '8', 'start': 's8'}, {'num': '9', 'start': 's9'}, {'num': '10', 'start': 's10'}, {'key_one': 'value_one', 'key_two': 'value_two'}, {'num': '11', 'start': 's11'}, {'num': '12', 'start': 's12'}, {'num': '13', 'start': 's13'}, {'num': '14', 'start': 's14'}, {'num': '15', 'start': 's15'}, {'key_one': 'value_one', 'key_two': 'value_two'}, {'num': '16', 'start': 's16'}, {'num': '17', 'start': 's17'}, {'num': '18', 'start': 's18'}]
new_list = [[]]
for dictionary in new_list:
    if 'start' in dictionary.keys():
        new_list[-1].append(dictionary)
    elif new_list[-1]:
        new_list.append([])
new_list = new_list[:-1]

让我们将原始的dict列表定义为L,并将所需的最终结果(dict列表)定义为Rsub_list是用于收集块的临时列表:

R = []
sub_list = []
for d in L:
    if 'start' in d:
        sub_list.append(d)
    else:
        if sub_list:
            R.append(sub_list)
            sub_list = []
print R

附加条件if sub_list:还可以确保R中永远没有空的sub_list。你知道吗

干杯

相关问题 更多 >

    热门问题