为什么python会将我的字典解释为列表?

时间:2018-07-07 01:08:42

标签: python list dictionary tuples

我正在编写一个程序来对csv文件进行排序。应该从文件中提取行,并根据字典中是否已存在“捐助者”,将“捐助者”添加到字典中或将行中的信息附加到旧值。我收到错误提示:

错误声明:文件“ C:/ Users / riley / Desktop / Python Files / MYLATEST1.py”,第27行,在     施主[施主] = [[数据]] builtins.TypeError:列表索引必须是整数或切片,而不是元组

我是python的新手,但似乎python将我的字典解释为列表。那是怎么回事吗?如果是这样,为什么?感谢您的帮助!

def createDonorDirect():

displayList.remove

2 个答案:

答案 0 :(得分:1)

错误的原因是您正在将给定元组值的施主分配给键,这在这里是错误的,因为元组包含多个值。 示例问题的重新生成,代码如下:-

>>> data=['HI','Hello','How','are','you','my','name','is']
>>> donor = ''.join(data[3,5,7])
Traceback (most recent call last):
  File "<pyshell#34>", line 1, in <module>
    donor = ''.join(data[3,5,7])
**TypeError: list indices must be integers or slices, not tuple**
>>> 

第二个简化代码:-

>>> data[3,5,7]
Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    data[3,5,7]
TypeError: list indices must be integers or slices, not tuple

答案 1 :(得分:0)

有时,元组声明可能会造成一些混乱。

例如:SOME_CONSTANT = 1,SOME_CONSTANT = (1, )相同。两者都是元组。

另一方面,SOME_CONSTANT = (1)SOME_CONSTANT = 1相同。两者都是整数。

在您的情况下,您只需要更改:

donor = ''.join(data[3,5,7])

donor = ''.join(data[3] + data[5] + data[7])

示例:

data=['A','B','C','D','E','F','G','H']
print ''.join(data[3] + data[5] + data[7])
DFH