Python 列表和字典理解

Python list and dictionary comprehension

我正在尝试使用列表词典理解。这里有一小段代码我没能转化。

lst = ['C', 'A', 'B', 'A']
myd = {}
for v, k in enumerate(lst):
    if k in myd:
        myd[k].append(v)
    else:
        myd[k] = [v]

print(myd)

>>> {'C': [0], 'A': [1, 3], 'B': [2]}

我很乐意得到一些帮助。

这是答案,尽管我认为非理解方法更容易理解。如前所述,这至少没有效率。

我会留在你所拥有的。

{k:[i for i, j in enumerate(lst) if j == k] for k in set(lst)}

一个 hack with helper dict,但至少它是线性时间。

>>> {k: d.setdefault(k, []).append(i) or d[k]
     for d in [{}]
     for i, k in enumerate(lst)}
{'C': [0], 'A': [1, 3], 'B': [2]}

变体:

>>> {k: d.setdefault(k, [i])
     for d in [{}]
     for i, k in enumerate(lst)
     if k not in d or d[k].append(i)}
{'C': [0], 'A': [1, 3], 'B': [2]}