[英]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.