在 Python 中获取数据时如何修复此错误
How to fix this error when take data in Python
这里的问题是,当我输入 user='U3' 并进行调试时,我看到 history1[:, 1][i1][j1] 和 transactions1[:, 0][m] 具有相同的值。即 ['T500'] 但表达式 return 为假(也为 ['T600']),当它们具有值 ['T1000'] 时,它们 return 为真。最后的输出是 ['I1', 'I3', 'I2'] 而不是 ['I1', 'I3', 'I2', 'I3' , 'I1', 'I3', 'I2']。请给我一些
建议解决此问题。
感谢支持
def createMatrix(user, transactions1, history1):
temp = []
for i1 in range(len(history1[:, 0])):
if history1[:, 0][i1] == user:
for j1 in range(len(history1[:, 1][i1])):
for m in range(len(transactions1[:, 0])):
if history1[:, 1][i1][j1] == transactions1[:, 0][m]: #<------ Problem here
for item in transactions1[:, 1][m]:
temp.append(item)
listNew = dict(zip(*np.unique(temp, return_counts=True)))
return temp
参数:transactions1
[[array(['T100'], dtype='<U4') array(['I1', 'I2', 'I5'], dtype='<U2')]
[array(['T200'], dtype='<U4') array(['I2', 'I4'], dtype='<U2')]
[array(['T300'], dtype='<U4') array(['I2', 'I3'], dtype='<U2')]
[array(['T400'], dtype='<U4') array(['I1', 'I2', 'I4'], dtype='<U2')]
[array(['T500'], dtype='<U4') array(['I1', 'I3'], dtype='<U2')]
[array(['T600'], dtype='<U4') array(['I2', 'I3'], dtype='<U2')]
[array(['T700'], dtype='<U4') array(['I1', 'I3'], dtype='<U2')]
[array(['T800'], dtype='<U4') array(['I1', 'I2', 'I3', 'I5'], dtype='<U2')]
[array(['T900'], dtype='<U4') array(['I1', 'I2', 'I3'], dtype='<U2')]
[array(['T1000'], dtype='<U5') array(['I1', 'I3', 'I2'], dtype='<U2')]]
参数:history1
[[array(['U1'], dtype='<U2') array(['T100', 'T400'], dtype='<U4')]
[array(['U2'], dtype='<U2') array(['T200', 'T300', 'T700'], dtype='<U4')]
[array(['U3'], dtype='<U2') array(['T500 ', 'T600 ', 'T1000'], dtype='<U5')]
[array(['U4'], dtype='<U2') array(['T800'], dtype='<U4')]
[array(['U5'], dtype='<U2') array(['T900'], dtype='<U4')]]
你的 history1
参数在 T500 和 T600 之后 spaces。
[array(['U3'], dtype='<U2') array(['T500 ', 'T600 ', 'T1000'], dtype='<U5')]
您的 transaction1
论点不成立。
[array(['T500'], dtype='<U4') array(['I1', 'I3'], dtype='<U2')]
[array(['T600'], dtype='<U4') array(['I2', 'I3'], dtype='<U2')]
'T500 '
不等于 'T500'
要么在创建 history1
和 transactions1
参数之前整理数据以删除尾随的 space,要么在有问题的行上添加 .strip()
。
if history1[:, 1][i1][j1].strip() == transactions1[:, 0][m].strip(): #<------ Problem here
这里的问题是,当我输入 user='U3' 并进行调试时,我看到 history1[:, 1][i1][j1] 和 transactions1[:, 0][m] 具有相同的值。即 ['T500'] 但表达式 return 为假(也为 ['T600']),当它们具有值 ['T1000'] 时,它们 return 为真。最后的输出是 ['I1', 'I3', 'I2'] 而不是 ['I1', 'I3', 'I2', 'I3' , 'I1', 'I3', 'I2']。请给我一些 建议解决此问题。
感谢支持
def createMatrix(user, transactions1, history1):
temp = []
for i1 in range(len(history1[:, 0])):
if history1[:, 0][i1] == user:
for j1 in range(len(history1[:, 1][i1])):
for m in range(len(transactions1[:, 0])):
if history1[:, 1][i1][j1] == transactions1[:, 0][m]: #<------ Problem here
for item in transactions1[:, 1][m]:
temp.append(item)
listNew = dict(zip(*np.unique(temp, return_counts=True)))
return temp
参数:transactions1
[[array(['T100'], dtype='<U4') array(['I1', 'I2', 'I5'], dtype='<U2')]
[array(['T200'], dtype='<U4') array(['I2', 'I4'], dtype='<U2')]
[array(['T300'], dtype='<U4') array(['I2', 'I3'], dtype='<U2')]
[array(['T400'], dtype='<U4') array(['I1', 'I2', 'I4'], dtype='<U2')]
[array(['T500'], dtype='<U4') array(['I1', 'I3'], dtype='<U2')]
[array(['T600'], dtype='<U4') array(['I2', 'I3'], dtype='<U2')]
[array(['T700'], dtype='<U4') array(['I1', 'I3'], dtype='<U2')]
[array(['T800'], dtype='<U4') array(['I1', 'I2', 'I3', 'I5'], dtype='<U2')]
[array(['T900'], dtype='<U4') array(['I1', 'I2', 'I3'], dtype='<U2')]
[array(['T1000'], dtype='<U5') array(['I1', 'I3', 'I2'], dtype='<U2')]]
参数:history1
[[array(['U1'], dtype='<U2') array(['T100', 'T400'], dtype='<U4')]
[array(['U2'], dtype='<U2') array(['T200', 'T300', 'T700'], dtype='<U4')]
[array(['U3'], dtype='<U2') array(['T500 ', 'T600 ', 'T1000'], dtype='<U5')]
[array(['U4'], dtype='<U2') array(['T800'], dtype='<U4')]
[array(['U5'], dtype='<U2') array(['T900'], dtype='<U4')]]
你的 history1
参数在 T500 和 T600 之后 spaces。
[array(['U3'], dtype='<U2') array(['T500 ', 'T600 ', 'T1000'], dtype='<U5')]
您的 transaction1
论点不成立。
[array(['T500'], dtype='<U4') array(['I1', 'I3'], dtype='<U2')]
[array(['T600'], dtype='<U4') array(['I2', 'I3'], dtype='<U2')]
'T500 '
不等于 'T500'
要么在创建 history1
和 transactions1
参数之前整理数据以删除尾随的 space,要么在有问题的行上添加 .strip()
。
if history1[:, 1][i1][j1].strip() == transactions1[:, 0][m].strip(): #<------ Problem here