繁体   English   中英

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,但至少是线性时间。

>>> {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]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM