Home » Python » How to initialize a dict with keys from a list and empty value in Python?

How to initialize a dict with keys from a list and empty value in Python?

Posted by: admin November 1, 2017 Leave a comment

Questions:

I’d like to get from this:

keys = [1,2,3]

to this:

{1: None, 2: None, 3: None}

Is there a pythonic way of doing it?

This is an ugly way to do it:

>>> keys = [1,2,3]
>>> dict([(1,2)])
{1: 2}
>>> dict(zip(keys, [None]*len(keys)))
{1: None, 2: None, 3: None}
Answers:

dict.fromkeys([1, 2, 3, 4])

This is actually a classmethod, so it works for dict-subclasses (like collections.defaultdict) as well. The optional second argument specifies the value to use for the keys (defaults to None.)

Questions:
Answers:

nobody cared to give a dict-comprehension solution ?

>>> keys = [1,2,3,5,6,7]
>>> {key: None for key in keys}
{1: None, 2: None, 3: None, 5: None, 6: None, 7: None}

Questions:
Answers:
dict.fromkeys(keys, None)

Questions:
Answers:
>>> keyDict = {"a","b","c","d"}

>>> dict([(key, []) for key in keyDict])

Output:

{'a': [], 'c': [], 'b': [], 'd': []}

Questions:
Answers:
d = {}
for i in keys:
    d[i] = None

Questions:
Answers:
d = {}
for i in range(len(keys)):
    d.update({i+1:[]})