Python 'list indices must be integers, not tuple"

前端 未结 3 1987
南旧
南旧 2021-02-01 02:21

I have been banging my head against this for two days now. I am new to python and programming so the other examples of this type of error have not helped me to much. I am readin

3条回答
  •  -上瘾入骨i
    2021-02-01 02:57

    Why does the error mention tuples?

    Others have explained that the problem was the missing ,, but the final mystery is why does the error message talk about tuples?

    The reason is that your:

    ["pennies", '2.5', '50.0', '.01'] 
    ["nickles", '5.0', '40.0', '.05']
    

    can be reduced to:

    [][1, 2]
    

    as mentioned by 6502 with the same error.

    But then __getitem__, which deals with [] resolution, converts object[1, 2] to a tuple:

    class C(object):
        def __getitem__(self, k):
            return k
    
    # Single argument is passed directly.
    assert C()[0] == 0
    
    # Multiple indices generate a tuple.
    assert C()[0, 1] == (0, 1)
    

    and the implementation of __getitem__ for the list built-in class cannot deal with tuple arguments like that.

    More examples of __getitem__ action at: https://stackoverflow.com/a/33086813/895245

提交回复
热议问题