我有嵌套列表:
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的解决方案?
答案 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
,我们会在字典中将v
与i
相关联。
如果存在冲突 - 在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} }}