我有一个大小约为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
看来我的代码不简洁有效,那么如何改进呢?
答案 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}