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'}]
4 Réponses :
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}
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}
Tu peux essayer
final_dict={}
for dico in list_dict:
final_dict[dico['id']] = dico['name']
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'}