【问题标题】:Python converting a list into a dict with a value of 1 for each key [duplicate]Python将列表转换为每个键值为1的字典[重复]
【发布时间】:2016-01-07 18:23:16
【问题描述】:

我有:

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

我想要这样,列表将转换为字典

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

所以我做到了:

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

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

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

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以为此使用fromkeys()

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

    您还可以使用字典理解(感谢 Steven Rumbalski 提醒我)

    somedict = {x: 1 for x in somelist}
    

    fromkeys 的效率稍高一些,如下所示。

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

    【讨论】:

    • 字典理解也可以:{key: 1 for key in somelist}dict.fromkeys 显然是最好的答案,但了解 dict 理解也很好。
    猜你喜欢
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2019-05-02
    • 2022-11-14
    相关资源
    最近更新 更多