web-dev-qa-db-fra.com

Boucle for une seule ligne pour construire un dictionnaire?

Je construis un dictionnaire (que je transformerai plus tard en chaîne JSON). Je le construis comme ça:

data = {}
for smallItem in bigList:
    data[smallItem] = smallItem

Comment puis-je faire cela pour boucler une ligne?

23
easythrees

Vous pouvez utiliser un compréhension de dict :

data = {smallItem:smallItem for smallItem in bigList}

Vous pouvez également utiliser dict et un expression de générateur :

data = dict((smallItem, smallItem) for smallItem in bigList)

Mais la compréhension du dict sera plus rapide.

Quant à la conversion en chaîne JSON, vous pouvez utiliser json.dumps .

36
user2555451

En fait, dans ce cas spécifique, vous n'avez même pas besoin d'une compréhension du dictionnaire car vous utilisez des paires clé/valeur en double

>>> bigList = [1, 2, 3, 4, 5]
>>> dict(Zip(bigList, bigList))
{1: 1, 2: 2, 3: 3, 4: 4, 5: 5}
6
jamylak