J'ai ce genre de liste de la liste du dictionnaire de Python que j'aimerais transformer dans ce type de liste de la liste du dictionnaire P>
7 Réponses :
Vous pouvez créer un dictionnaire en itérant sur les éléments de votre liste d'origine. En supposant que votre liste soit appelée car_list code>:
Merci, je travaille, du livre ou du papier qui traite de ces problèmes, je suis très nouveau.
Nous pouvons utiliser la compréhension dict où c code> est votre donnée d'origine p> p> p>
Assumer que votre liste est appelée ceci produit dans le dictionnaire explication: pour chaque dictionnaire de cette liste ( l code>, vous pouvez accomplir cela à l'aide d'une itération simple et de construire un nouveau dictionnaire d code>: d code>: p> sous code>): SUB.POP ('COMPLANIA') CODE> Supprime la saisie de la touche "compagnon" dans "code> sous code> et retourne sa valeur associée. Nous mettons ensuite à jour le dictionnaire d code> pour avoir une clé de ce qui venait de retourner et nous associe à cette clé, le reste de sous code> après la suppression de cette entrée. < / p> p>
Pourquoi utiliseriez-vous une opération destructive comme .pop code> ici? Y a-t-il un avantage? En général, à moins que vous n'essayiez de supprimer les choses, je voudrais vous tromper du côté de pas i> enlever les choses.
@ Juanpa.arrivillaga Tout simplement parce que POP code> retourne succinctement la clé que nous souhaitons pour le nouveau dictionnaire, et après sa réalisation, laisse derrière lui que la valeur associée à cette clé devrait être. Je vois où tu viens de :)
avec une fonction de mappeuse pour renvoyer une nouvelle liste personnalisée de DICTS
a=[
{
"compania": "Fiat",
"modelo": "2014",
"precio": "1000"
},
{
"compania": "Renault",
"modelo": "2014",
"precio": "2000"
},
{
"compania": "Volkwagen",
"modelo": "2014",
"precio": "3000"
},
{
"compania": "Chevrolet",
"modelo": "2014",
"precio": "1000"
},
{
"compania": "Peugeot",
"modelo": "2014",
"precio": "2000"
}
]
def mapper(temp): # define a mapper
new_temp={}
new_temp[temp['compania']]={k:v for k,v in temp.items() if k!='compania'}
return new_temp
map(mapper,a) # call map function with mapper and list as argument
{'Chevrolet': {'modelo': '2014', 'precio': '1000'},
'Fiat': {'modelo': '2014', 'precio': '1000'},
'Peugeot': {'modelo': '2014', 'precio': '2000'},
'Renault': {'modelo': '2014', 'precio': '2000'},
'Volkwagen': {'modelo': '2014', 'precio': '3000'}}
Je partagerais une solution simple:
N'utilisez pas .pop code> dans une construction de compréhension, il a un effet secondaire et éviter les effets secondaires dans des constructions fonctionnelles.
Précisément parce que la solution utilise un effet secondaire, il est court dans ce cas particulier.
Vous pouvez simplement utiliser le dictionnaire Mise à jour qui peut alors produire un nouveau dictionnaire de votre préférence. OUPUT: P>
blockQuote>
Qu'avez-vous essayé et quel est le problème avec cela? Notez également que votre sortie est une chaîne de mappage dictionnaire des dictionnaires, pas une liste de la liste des dictionnaires.
Alors qu'avez-vous essayé? Cela semble assez facile, il suffit de sortir le
d ['comptoria'] code> à partir de chaque élément de la liste et de créer un dictionnaire avec lui et avec le reste des paires de la valeur clé étant son contenu.Oui, je suis très noob avec ces problèmes. Merci