3
votes

Aplatir la liste des dictionnaires avec plusieurs paires clé / valeur

J'ai une liste de dictionnaires avec plusieurs KVP chacun

{k:v for d in list_dict for k, v in d.items()}

Je veux transformer cela dans ce format:

final_dict = {1: 'sana', 2: 'art', 3: 'tiara'}

J'ai essayé des compréhensions dict mais cela ne fonctionne pas. Voici le mieux que je puisse faire:

list_dict = [{'id': 1, 'name': 'sana'}, {'id': 2, 'name': 'art'}, {'id': 3, 'name': 'tiara'}]


0 commentaires

4 Réponses :


8
votes

Vous n'avez pas besoin de d.items() , vous pouvez simplement accéder aux propriétés id et name de chaque dict.

{d['id']: d['name'] for d in list_dict}


0 commentaires

3
votes

pour chaque élément de la liste, vous voulez que d["id"] soit la clé et d["name"] la valeur, de sorte que la compréhension du dictionnaire ressemblerait à ceci:

{d["id"]: d["name"] for d in list_dict}


0 commentaires

3
votes

Tu peux essayer

final_dict={} 
for dico in list_dict:
    final_dict[dico['id']] = dico['name'] 


0 commentaires

2
votes

Il y a probablement plusieurs façons de procéder. Voici une manière simple et agréable de le faire en utilisant un dataframe pandas:

import pandas as pd
df = pd.DataFrame(list_dict) # <- convert to dataframe
df = df.set_index('id') # <- set the index to the field you want as the key
final_dict = df['name'].to_dict() # <- convert the series 'name' to a dict
print(final_dict)

{1: 'sana', 2: 'art', 3: 'tiara'}


0 commentaires