作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个列表,我想生成一个字典 d
取出重复项并排除单个项目,这样第一个键的值为 0,第二个键的值为 1,依此类推。
我写了下面的代码:
d = {}
i = 0
for l in a_list:
if (l not in d) and (l != '<'):
d[l] = i
i += 1
如果a_list = ['a', 'b', '<', 'c', 'b', 'd']
,运行代码后 d
包含 {'a': 0, 'b': 1, 'c': 2, 'd':3}
.顺序并不重要。是否有更优雅的方法来获得相同的结果?
最佳答案
使用 dict.fromkeys
获取您的唯一出现(减去您不想要的值),然后 .update
应用序列,例如:
a_list = ['a', 'b', '<', 'c', 'b', 'd']
d = dict.fromkeys(el for el in a_list if el != '<')
d.update((k, i) for i, k in enumerate(d))
给你:
{'a': 0, 'b': 1, 'd': 2, 'c': 3}
如果顺序很重要,则使用 collections.OrderedDict.fromkeys
来保留原始值的顺序,或者如果它们应该按字母顺序排列,则对唯一值进行排序。
关于python - 创建一个具有递增值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45441907/
我是一名优秀的程序员,十分优秀!