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

eal*_*eon 4 python

我有:

somelist = ['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)

我希望这样,列表将转换为字典

somedict = {'a' : 1, 'b' : 1, 'c' : 1, 'd' : 1}
Run Code Online (Sandbox Code Playgroud)

所以我做了:

somedict = dict(zip(somelist, [1 for i in somelist]))
Run Code Online (Sandbox Code Playgroud)

它确实有效,但不确定它是否是最有效或最快速的方式

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

Mor*_*app 10

你可以用fromkeys()它:

somelist = ['a', 'b', 'c', 'd']
somedict = dict.fromkeys(somelist, 1)
Run Code Online (Sandbox Code Playgroud)

你也可以使用词典理解(感谢Steven Rumbalski提醒我)

somedict = {x: 1 for x in somelist}
Run Code Online (Sandbox Code Playgroud)

fromkeys 虽然效率稍高,如此处所示.

>>> timeit('{a: 1 for a in range(100)}')
6.992431184339719
>>> timeit('dict.fromkeys(range(100), 1)')
5.276147376280434
Run Code Online (Sandbox Code Playgroud)

  • 字典理解也可以起作用:`{key:1 for somelist in somelist}`.`dict.fromkeys`显然是最好的答案,但了解dict理解也很好. (2认同)