Python将列表转换为dict,每个键的值为1

Python converting a list into a dict with a value of 1 for each key

本问题已经有最佳答案,请猛点这里访问。

我有:

1
somelist = ['a', 'b', 'c', 'd']

我想要它,这样列表就可以转换成听写了

1
somedict = {'a' : 1, 'b' : 1, 'c' : 1, 'd' : 1}

所以我做到了:

1
somedict = dict(zip(somelist, [1 for i in somelist]))

它确实有效,但不确定它是最有效的还是最简单的。

还有其他方法吗,最好是最简单的方法?


您只需使用fromkeys()即可:

1
2
somelist = ['a', 'b', 'c', 'd']
somedict = dict.fromkeys(somelist, 1)

你也可以用字典理解(感谢史蒂文·鲁姆巴尔斯基提醒我)

1
somedict = {x: 1 for x in somelist}

不过,如图所示,fromkeys的效率稍高一些。

1
2
3
4
>>> timeit('{a: 1 for a in range(100)}')
6.992431184339719
>>> timeit('dict.fromkeys(range(100), 1)')
5.276147376280434