IndexError: tuple index out of range - Creating CSV from dict
IndexError: tuple index out of range - Creating CSV from dict
我正在尝试从字典创建 csv,但收到以下错误。我最初有键名而不是索引号,但是当我添加多个字典值时它导致了错误。
IndexError: tuple index out of range
代码:
#Create dict file to test
userInfoDict = {'orgID': '17', 'firstName': 'TestFirstName', 'lastName': 'TestLastName', 'emailAddress': 'test@test.com',
'phoneNumber': '1234567890', 'isoCountryCode': 'US'}, {'orgID': '27', 'firstName': 'TestFirstName2', 'lastName': 'TestLastName2', 'emailAddress': 'test2@test.com',
'phoneNumber': '5384537645', 'isoCountryCode': 'US'}
def create_csv(userInfoDict):
import csv
userInfo = open('userInfo.csv', 'w')
for key in userInfoDict:
if len(userInfoDict[0]) == 0:
print('Not a valid user: No orgID')
return None
elif len(userInfoDict[1]) == 0:
print('Not a valid user: No First Name')
return None
elif len(userInfoDict[3]) == 0 and len(userInfoDict[4]) == 0:
print('Not a valid user: No Email or Phone')
return None
else:
writer = csv.DictWriter(userInfo, fieldnames=userInfoDict.keys(), delimiter=',')
#writer.writeheader() # If you want to add header
writer.writerow(userInfoDict)
return
create_csv(userInfoDict)
您提供的 userInfoDict
是两个 dicts
的 tuple
,相当于:
userInfoDict = ({'orgID': '17', 'firstName': 'TestFirstName', 'lastName': 'TestLastName', 'emailAddress': 'test@test.com','phoneNumber': '1234567890', 'isoCountryCode': 'US'},
{'orgID': '27', 'firstName': 'TestFirstName2', 'lastName': 'TestLastName2', 'emailAddress': 'test2@test.com', 'phoneNumber': '5384537645', 'isoCountryCode': 'US'}
)
然而您正在尝试计算 len(userInfoDict[3])
。它没有索引为 3 的元素,只有索引 0 和 1。
那是因为你的 'userInfoDict' 是长度为二的元组。
len(userInfoDict)
2
但您似乎试图在您的代码中访问 'userInfoDict[3]' 和 userInfoDict[4],但它们并不存在。
见下文
userInfoDict[0]
{'emailAddress': 'test@test.com',
'firstName': 'TestFirstName',
'isoCountryCode': 'US',
'lastName': 'TestLastName',
'orgID': '17',
'phoneNumber': '1234567890'}
和
userInfoDict[1]
{'emailAddress': 'test2@test.com',
'firstName': 'TestFirstName2',
'isoCountryCode': 'US',
'lastName': 'TestLastName2',
'orgID': '27',
'phoneNumber': '5384537645'}
所以任何超过 1 的索引都会给你超出索引的错误
userInfoDict[2]
IndexError: tuple index out of range
请检查你的 'userInfoDict' 这不是字典,而是元组。
我正在尝试从字典创建 csv,但收到以下错误。我最初有键名而不是索引号,但是当我添加多个字典值时它导致了错误。
IndexError: tuple index out of range
代码:
#Create dict file to test
userInfoDict = {'orgID': '17', 'firstName': 'TestFirstName', 'lastName': 'TestLastName', 'emailAddress': 'test@test.com',
'phoneNumber': '1234567890', 'isoCountryCode': 'US'}, {'orgID': '27', 'firstName': 'TestFirstName2', 'lastName': 'TestLastName2', 'emailAddress': 'test2@test.com',
'phoneNumber': '5384537645', 'isoCountryCode': 'US'}
def create_csv(userInfoDict):
import csv
userInfo = open('userInfo.csv', 'w')
for key in userInfoDict:
if len(userInfoDict[0]) == 0:
print('Not a valid user: No orgID')
return None
elif len(userInfoDict[1]) == 0:
print('Not a valid user: No First Name')
return None
elif len(userInfoDict[3]) == 0 and len(userInfoDict[4]) == 0:
print('Not a valid user: No Email or Phone')
return None
else:
writer = csv.DictWriter(userInfo, fieldnames=userInfoDict.keys(), delimiter=',')
#writer.writeheader() # If you want to add header
writer.writerow(userInfoDict)
return
create_csv(userInfoDict)
您提供的 userInfoDict
是两个 dicts
的 tuple
,相当于:
userInfoDict = ({'orgID': '17', 'firstName': 'TestFirstName', 'lastName': 'TestLastName', 'emailAddress': 'test@test.com','phoneNumber': '1234567890', 'isoCountryCode': 'US'},
{'orgID': '27', 'firstName': 'TestFirstName2', 'lastName': 'TestLastName2', 'emailAddress': 'test2@test.com', 'phoneNumber': '5384537645', 'isoCountryCode': 'US'}
)
然而您正在尝试计算 len(userInfoDict[3])
。它没有索引为 3 的元素,只有索引 0 和 1。
那是因为你的 'userInfoDict' 是长度为二的元组。
len(userInfoDict)
2
但您似乎试图在您的代码中访问 'userInfoDict[3]' 和 userInfoDict[4],但它们并不存在。
见下文
userInfoDict[0]
{'emailAddress': 'test@test.com',
'firstName': 'TestFirstName',
'isoCountryCode': 'US',
'lastName': 'TestLastName',
'orgID': '17',
'phoneNumber': '1234567890'}
和
userInfoDict[1]
{'emailAddress': 'test2@test.com',
'firstName': 'TestFirstName2',
'isoCountryCode': 'US',
'lastName': 'TestLastName2',
'orgID': '27',
'phoneNumber': '5384537645'}
所以任何超过 1 的索引都会给你超出索引的错误
userInfoDict[2]
IndexError: tuple index out of range
请检查你的 'userInfoDict' 这不是字典,而是元组。