嵌套列表与计数组dict

时间:2017-07-27 11:14:46

标签: python list dictionary count

我有嵌套列表:

L = [[15,10], [11], [9,7,8]]

并且需要计数组[15, 10]0组,[11]1组,[9,7,8]2组 - 输出为字典:

print (d)
{7: 2, 8: 2, 9: 2, 10: 0, 11: 1, 15: 0}

我试试:

d = {k:v for k,v in enumerate(L)}
d = {k: oldk for oldk, oldv in d.items() for k in oldv}
print (d)
{7: 2, 8: 2, 9: 2, 10: 0, 11: 1, 15: 0}

我认为我的解决方案有点过于复杂。是否有一些更好,更pythonic的解决方案?

2 个答案:

答案 0 :(得分:2)

如何使用:

d = {v: i for i,l in enumerate(L) for v in l}

生成:

>>> {v: i for i,l in enumerate(L) for v in l}
{7: 2, 8: 2, 9: 2, 10: 0, 11: 1, 15: 0}

这个想法如下:首先我们使用L迭代enumerate(L),然后我们获得子列表i索引 vs 。接下来,我们遍历v中的每个元素vs。对于每个v,我们会在字典中将vi相关联。

如果存在冲突 - 在L中出现两次的值 - 那么将使用最后一个索引。

答案 1 :(得分:2)

您可以使用:

d = {v: i for i in range(len(L)) for v in L[i]}

输出:

{7: 2, 8: 2, 9: 2, 10: 0, 11: 1, 15: 0}

使用L遍历range(len(L))以访问每个列表,并将每个value指定为字典的key,并将列表的索引指定为{{1} }}