alexis
alexis

Reputation: 99

Extract elements from list of lists

I have an object and I want to extract some elements from object to made a list.

I have this

[["Test_1", 
  {"name": "Test_level_1", "value": 10}, 
  {"name": "Test_level_1 again", "value": 15}], 
 ["Test_2", 
  {"name": "Test_level_2", "value": 1}, 
  {"name": "Test_level_2 again", "value": 5}]]

And I trying to have this

["Test_level_1", 
 "Test_level_1 again", 
 "Test_level_2", 
 "Test_level_2 again"]

What is the way to do it?

Upvotes: 1

Views: 2456

Answers (3)

Chris
Chris

Reputation: 36680

A list comprehension will cover this quite nicely.

data = [
 ["Test_1", 
  {"name": "Test_level_1", "value": 10}, 
  {"name": "Test_level_1 again", "value": 15}], 
 ["Test_2", 
  {"name": "Test_level_2", "value": 1}, 
  {"name": "Test_level_2 again", "value": 5}]
]

desired_data = [
  item['name'] 
  for sublist in data 
  for item in sublist 
  if isinstance(item, dict)
]

Result:

['Test_level_1', 'Test_level_1 again', 'Test_level_2', 'Test_level_2 again']

Upvotes: 4

Lakmal Caldera
Lakmal Caldera

Reputation: 1031

arr = [
  ["Test_1",
   {"name": "Test_level_1",
    "value": 10},
   {"name": "Test_level_1 again",
    "value": 15}],
  ["Test_2",
   {"name": "Test_level_2",
    "value": 1},
   {"name": "Test_level_2 again",
    "value": 5}]
]

ans = [item["name"] for subarr in arr 
                    for index, item in enumerate(subarr) 
                    if index!=0]
print(ans)

Upvotes: -2

azro
azro

Reputation: 54168

Iterate over your list, with a nice unpacking and keep the value from "name"

values = [["Test_1", {"name":"Test_level_1", "value":10}, {"name":"Test_level_1 again", "value":15}], 
          ["Test_2", {"name":"Test_level_2", "value":1}, {"name":"Test_level_2 again", "value":5}]]

result = []
for first, *others in values:
    for other in others:
        result.append(other["name"])

Upvotes: 0

Related Questions