我正在编写一个程序来对csv文件进行排序。应该从文件中提取行,并根据字典中是否已存在“捐助者”,将“捐助者”添加到字典中或将行中的信息附加到旧值。我收到错误提示:
错误声明:文件“ C:/ Users / riley / Desktop / Python Files / MYLATEST1.py”,第27行,在 施主[施主] = [[数据]] builtins.TypeError:列表索引必须是整数或切片,而不是元组
我是python的新手,但似乎python将我的字典解释为列表。那是怎么回事吗?如果是这样,为什么?感谢您的帮助!
def createDonorDirect():
displayList.remove
答案 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