Python:在列表列表中找到最左边的非零值

时间:2013-08-15 03:02:08

标签: python python-3.x

说我有这份清单

listlist = [[0,0,0,1],[0,0,1,1],[1,0,1,1]]

和一个空的dict()

answer = dict()

并说我想在每个列表中找到最左边的非零,这样我就可以将非零数字的索引保存到字典中,如:

for list in listlist: #(this is how the first iteration would look like:)

answer[0] = 3

下一次迭代

answer[1] = 2

下一次迭代

answer[2] = 0

我对编程非常陌生,所以请原谅我,如果它是微不足道的,我尝试了不同的东西,很难找到如何做到这一点。

3 个答案:

答案 0 :(得分:8)

如果它只是01只做了类似的事情,

>>> answer = {i: lst.index(1) for i, lst in enumerate(listlist)}
>>> answer
{0: 3, 1: 2, 2: 0}

此外,请勿使用list作为变量名称,因为它会屏蔽内置list

答案 1 :(得分:4)

假设只有01这应该有效

i = 0
for mylist in listlist:
  answer[i] = mylist.index(1)
  i += 1

我建议您不要将列表list命名为覆盖某些功能。我更喜欢默认使用变量名mylist

答案 2 :(得分:2)

listlist = [[0,0,0,1],[0,0,1,1],[1,0,1,1]]
answer = dict()
for idx,alist in enumerate(listlist):
    for i in range(len(alist)):
        if alist[i] > 0:
            answer[idx] = i