我有一个包含多个词典的列表。我不需要这些词典中的一些。最后,我希望所有的词典都有关键的开头'在他们中。而且,我想要用“开始”这个词来开始'在它们组合在一起(在一个列表中),每次一个带有'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}]]
感谢您的帮助。
答案 0 :(得分:2)
让我们将您的原始词典列表定义为L
,并将所需的最终结果(词典列表列表)定义为R
。 sub_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:
还可确保您的sub_list
中永远不会有空R
。
干杯
答案 1 :(得分:0)
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]