简体   繁体   中英

Convert dict to list with same keys, values and layout

I´m trying to extract several keys/values out of a List.

My List:

a = [ 
      {
        "id": "1",
        "system": "2",
      },
      {
        "id": "3",
        "system": "4",
      }
    ]

Now i need to parse this into a function ( next function) and it returns a[current] or a[0] . But now is a[current] or a[0] a dict.

Next step is just to extract the ID and the value of it. But this below only works if a is a list! So i need to convert the a[current] or a[0] into a list. The code below has to be the same because it´sa function and if i cannot change this for several reasons, so i need to convert the dict a into a list a .

c = list()
for data in a:
     value = dict()
     value["id"] = data.get("id")
     c.append(value)

And here i stuck, i tried several methods like .keys(), .values(), but i can´t put them together to a list anymore. It needs to be scaleable/configurable because a changes from time to time (not a[0]["id"], ...). Currently a[0] looks like this: {'id': '1', 'system': '2'}, but it needs to be like this: [{'id': '1', 'system': '2'},], that i can parse it to my search function.

I need a new list like c :

    c = [ 
          {
            "id": "1",
          },
          {
            "id": "3",
          }
        ]

code updated:

a = [ 
      {
        "id": "1",
        "system": "2",
      },
      {
        "id": "3",
        "system": "4",
      }
    ]
    
print([[value] for value in a ])

Result:

[[{'id': '1', 'system': '2'}], [{'id': '3', 'system': '4'}]]

Is this your your expected output:

a = [ 
      {
        "id": "1",
        "system": "2",
      },
      {
        "id": "3",
        "system": "4",
      }
    ]
    
c = list()
for data in a:
     value={}
     value["id"]=data.get("id")
     c.append([value])
     # c.extend([value])

print(c)
# [[{'id': '1'}], [{'id': '3'}]]

# print(c) # Extend's output 
# [{'id': '1'},{'id': '3'}]

Or you can try one-line solution

print([[{"id":val.get("id")}] for val in a])
# [[{'id': '1'}], [{'id': '3'}]]

Or as your comment if you just want

[{'id': '1', 'system': '2'},]

Then :

print([a[0]])

Here is a function to filter your dicts list:

def filter_dicts(key, a):
    return [{key: element[key]} for element in a]

Use it like this:

c = filter_dicts("id", a)

Note that this will cause an error if there is a dict without the specified key, which may or may not be what you want. To avoid this, replace element[key] with element.get(key, None) .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM