pythondictionaryset

Set to dict Python


is there any pythonic way to convert a set into a dict?

I got the following set

s = {1,2,4,5,6}

and want the following dict

c = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0}

with a list you would do

a = [1,2,3,4,5,6]
b = []

while len(b) < len(a):
   b.append(0)

c = dict(itertools.izip(a,b))

Solution

  • Use dict.fromkeys():

    c = dict.fromkeys(s, 0)
    

    Demo:

    >>> s = {1,2,4,5,6}
    >>> dict.fromkeys(s, 0)
    {1: 0, 2: 0, 4: 0, 5: 0, 6: 0}
    

    This works for lists as well; it is the most efficient method to create a dictionary from a sequence. Note all values are references to that one default you passed into dict.fromkeys(), so be careful when that default value is a mutable object.