J'ai trois listes, je veux convertir en un dict spécifique
for key in A: dict_A["name"].append(key)
Je veux un dict comme ça
"key1": {
"name": "a",
"age": 10
},
"key2": {
"name": "b",
"age": 20
}
J'essaye de manière différente par étape différente, mais je n'obtiens pas ce dict
A = ["a", "b"] B = ["10", "20"] C = ["key1", "key2"]
4 Réponses :
Utilisation d'une compréhension de dictionnaire:
{'key1': {'age': '10', 'name': 'a'}, 'key2': {'age': '20', 'name': 'b'}}
Cela donne:
res = {key: {'name': name, 'age': age} for key, name, age in zip(C, A, B)}
zip vous permet d'agréger les éléments de chaque itérable par index.
In[1]: {c: {'name': a, 'age': b} for a, b, c in zip(A, B, C)}
Out[1]: {'key1': {'name': 'a', 'age': '10'}, 'key2': {'name': 'b', 'age': '20'}}
Un code qui répond uniquement n'est pas préférable dans SO, essayez au moins de décrire aux OP / lecteurs ce que fait votre code.
Que diriez-vous de
for a,b,c in zip(A, B, C):
your_dict[c] = {"name" : a, "age": b}
Si vous ne souhaitez pas utiliser zip , vous pouvez utiliser enumerate comme indiqué ci-dessous:
print ({v:{"name": A[k],"age": B[k]} for k, v in enumerate(C)})
Copie possible de Création d'un dictionnaire imbriqué à partir de trois listes distinctes