以优雅的方式快速建立大型字典

时间:2016-10-12 12:36:30

标签: python

我有一个大小约为30000的列表:['aa', 'bb', 'cc', 'dd', ...],从这个列表中,我想构建一个将元素映射到索引的dict,因此结果dict为{'aa': 0, 'bb': 1, 'cc': 2, 'dd': 3, ...}。这是我的代码:

cnt = 0
mp = {}
for name in name_list:
    mp[name] = cnt
    cnt += 1
return mp

看来我的代码不简洁有效,那么如何改进呢?

3 个答案:

答案 0 :(得分:5)

最短的是使用enumerate和dict理解,我想:

mp = {element: index for index, element in enumerate(name_list)}

答案 1 :(得分:3)

您可以使用enumerate创建列表对象和索引之间的映射,然后在反向输出上调用dict

mp = dict(tup[::-1] for tup in enumerate(name_list))

答案 2 :(得分:1)

如何为每个项目使用列表索引?

mp = {item: name_list.index(item) for item in name_list}