J'aimerais en tirer:
keys = [1,2,3]
pour ça:
{1: None, 2: None, 3: None}
Existe-t-il une manière pythonique de le faire?
C'est une façon laide de le faire:
>>> keys = [1,2,3]
>>> dict([(1,2)])
{1: 2}
>>> dict(zip(keys, [None]*len(keys)))
{1: None, 2: None, 3: None}
dictionary
python
Juanjo Conti
la source
la source
dict.fromkeys([1, 2, 3], [])
toutes les clés sont mappées sur la même liste, et en modifier une les modifiera toutes.{k:[] for k in [1, 2, 3]}
est cependant toujours sûre.personne ne se souciait de donner une solution de compréhension de dict?
la source
False
).la source
dict.fromkeys(keys, [])
Production:
la source
keyDict
est trompeur, car la première ligne de code renvoie unset
, pas undict
.la source
TypeError: 'type' object is not iterable
:?list
c'est un type. Sauf si vous avez quelque chose comme çalist = []
, la méthode ci-dessus vous donnera toujours la même erreurDans de nombreux workflows où vous souhaitez attacher une valeur par défaut / initiale pour des clés arbitraires, vous n'avez pas besoin de hacher chaque clé individuellement à l'avance. Vous pouvez utiliser
collections.defaultdict
. Par exemple:C'est plus efficace, cela évite d'avoir à hacher toutes vos clés lors de l'instanciation. De plus,
defaultdict
est une sous-classe dedict
, il n'est donc généralement pas nécessaire de reconvertir en dictionnaire ordinaire.Pour les workflows où vous avez besoin de contrôles sur les touches autorisées, vous pouvez utiliser
dict.fromkeys
selon la réponse acceptée:la source