创建一个增量值的字典

Are*_*Tor 5 python dictionary

我有一个列表,我想生成一个字典d,取出重复项并排除单个项目,这样第一个键的值为0,第二个键的值为1,依此类推.

我写了以下代码:

d = {}
i = 0
for l in a_list:
    if (l not in d) and (l != '<'):
        d[l] = i
        i += 1
Run Code Online (Sandbox Code Playgroud)

如果a_list = ['a', 'b', '<', 'c', 'b', 'd'],运行代码后d包含{'a': 0, 'b': 1, 'c': 2, 'd':3}.订单并不重要.是否有更优雅的方式来获得相同的结果?

Jon*_*nts 5

使用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))
Run Code Online (Sandbox Code Playgroud)

给你:

{'a': 0, 'b': 1, 'd': 2, 'c': 3}
Run Code Online (Sandbox Code Playgroud)

如果顺序很重要,则使用collections.OrderedDict.fromkeys保留原始值的顺序,或者如果它们应该按字母顺序排序,则对唯一值进行排序.


qnn*_*nez 4

{b: a for a, b in enumerate(set(a_list) - {'<'})}
Run Code Online (Sandbox Code Playgroud)

set(a_list)从 中创建一个集合a_list。这有效地去除了 中的重复数字a_list,因为 aset只能包含唯一值。