Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Comments on How to group a flat list of attributes into a nested lists?
Post
How to group a flat list of attributes into a nested lists?
+2
−2
I have a flat list where each item is the key and value for an attribute. I want to transform this into a nested list where each attribute is a sublist.
Example input:
[
"attr1 apple 1",
"attr1 banana 2",
"attr2 grapes 1",
"attr2 oranges 2",
"attr3 watermelon 0"
]
The output should be:
[
[
"attr1 apple 1",
"attr1 banana 2",
],
[
"attr2 grapes 1",
"attr2 oranges 2",
],
[
"attr3 watermelon 0"
]
]
I tried this program, but the result is incorrect.
import re
# regex pattern definition
pattern = re.compile(r'attr\d+')
# Open the file for reading
with open(r"file path") as file:
# Initialize an empty list to store matching lines
matching_lines = []
# reading each line
for line in file:
# regex pattern match
if pattern.search(line):
# matching line append to the list
matching_lines.append(line.strip())
# Grouping the elements based on the regex pattern
#The required list
grouped_elements = []
#Temporary list for sublist grouping
current_group = []
for sentence in matching_lines:
if pattern.search(sentence):
current_group.append(sentence)
else:
if current_group:
grouped_elements.append(current_group)
current_group = [sentence]
if current_group:
grouped_elements.append(current_group)
# Print the grouped elements
for group in grouped_elements:
print(group)
I am getting this output:
[
'attr1 apple 1',
'attr1 banana 2',
'attr2 grapes 1',
'attr2 oranges 2',
'attr3 watermelon 0'
]
4 comment threads