I have a dict that looks like this:
JavaScript
x
2
1
OrderedDict([('arguments', {'index': 1, 'parent': None}), ('controls', {'index': 2, 'parent': None}), ('examples', {'index': 3, 'parent': None}), ('journal', {'index': 4, 'parent': None}), ('journal/config', {'index': 5, 'parent': 'journal'}), ('journal/journaltest', {'index': 6, 'parent': 'journal'}), ('procs', {'index': 7, 'parent': None}), ('processor', {'index': 8, 'parent': None}), ('prediction', {'index': 9, 'parent': None}), ('reports', {'index': 10, 'parent': None}), ('tooki', {'index': 11, 'parent': None}), ('tooki/help', {'index': 12, 'parent': 'tooki'}), ('tooki/lime', {'index': 13, 'parent': 'tooki'}), ('tooki/medium', {'index': 14, 'parent': 'tooki'}), ('tooki/share', {'index': 15, 'parent': 'tooki'}), ('tooki/trigger', {'index': 16, 'parent': 'tooki'})])
2
How can I iterate over the elements of this dict, and exclude any element that has “‘parent’ : None” and no child element (meaning, no other element in this dict has this one as a parent).
Expected output:
JavaScript
1
2
1
OrderedDict([('journal', {'index': 4, 'parent': None}), ('journal/config', {'index': 5, 'parent': 'journal'}), ('journal/journaltest', {'index': 6, 'parent': 'journal'}), ('tooki', {'index': 11, 'parent': None}), ('tooki/help', {'index': 12, 'parent': 'tooki'}), ('tooki/lime', {'index': 13, 'parent': 'tooki'}), ('tooki/medium', {'index': 14, 'parent': 'tooki'}), ('tooki/share', {'index': 15, 'parent': 'tooki'}), ('tooki/trigger', {'index': 16, 'parent': 'tooki'})])
2
Advertisement
Answer
I think this function can help you
JavaScript
1
14
14
1
def orderedDict(data_list: list):
2
result: list = []
3
for data in data_list:
4
is_ok = True
5
if data[1]["parent"] is None:
6
is_ok = False
7
for item in [x[0] for x in [y for y in data_list if y[0] != data[0]]]:
8
if data[0]+"/" in item:
9
is_ok = True
10
break
11
if is_ok:
12
result.append(data)
13
return result
14
To use it:
JavaScript
1
14
14
1
if __name__ == '__main__':
2
data = ([('arguments', {'index': 1, 'parent': None}), ('controls', {'index': 2, 'parent': None}),
3
('examples', {'index': 3, 'parent': None}), ('journal', {'index': 4, 'parent': None}),
4
('journal/config', {'index': 5, 'parent': 'journal'}),
5
('journal/journaltest', {'index': 6, 'parent': 'journal'}), ('procs', {'index': 7, 'parent': None}),
6
('processor', {'index': 8, 'parent': None}), ('prediction', {'index': 9, 'parent': None}),
7
('reports', {'index': 10, 'parent': None}), ('tooki', {'index': 11, 'parent': None}),
8
('tooki/help', {'index': 12, 'parent': 'tooki'}), ('tooki/lime', {'index': 13, 'parent': 'tooki'}),
9
('tooki/medium', {'index': 14, 'parent': 'tooki'}),
10
('tooki/share', {'index': 15, 'parent': 'tooki'}),
11
('tooki/trigger', {'index': 16, 'parent': 'tooki'})])
12
result = orderedDict(data_list=data)
13
print(result)
14