python-3.7 - 如何将此代码翻译成python 3?
问题描述
这段代码最初是用 Python 2 编写的,我需要在 python 3 中翻译它!很抱歉没有分享足够的信息:另外,这self.D
是第一次分配的部分:
def __init__(self,instance,transformed,describe1,describe2):
self.D=[]
self.instance=instance
self.transformed=transformed
self.describe1,self.describe2=describe1,describe2
self.describe=self.describe1+', '+self.describe2 if self.describe2 else self.describe1
self.column_num=self.tuple_num=self.view_num=0
self.names=[]
self.types=[]
self.origins=[]
self.features=[]
self.views=[]
self.classify_id=-1
self.classify_num = 1
self.classes=[]
def generateViews(self):
T=map(list,zip(*self.D))
if self.transformed==0:
s= int( self.column_num)
for column_id in range(s):
f = Features(self.names[column_id],self.types[column_id],self.origins[column_id])
#calculate min,max for numerical,temporal
if f.type==Type.numerical or f.type==Type.temporal:
f.min,f.max=min(T[column_id]),max(T[column_id])
if f.min==f.max:
self.types[column_id]=f.type=Type.none
self.features.append(f)
continue
d={}
#calculate distinct,ratio for categorical,temporal
if f.type == Type.categorical or f.type == Type.temporal:
for i in range(self.tuple_num):
print([type(self.D[i]) for i in range(self.tuple_num)])
if self.D[i][column_id] in d:
d[self.D[i][column_id]]+=1
else:
d[self.D[i][column_id]]=1
f.distinct = len(d)
f.ratio = 1.0 * f.distinct / self.tuple_num
f.distinct_values=[(k,d[k]) for k in sorted(d)]
if f.type==Type.temporal:
self.getIntervalBins(f)
self.features.append(f)
TypeError:“地图”对象不可下标
解决方案
您提供的代码段不足以解决问题。问题在于self.D
您尝试使用self.D[i]
. 请查看您的代码在哪里self.D
被实例化,并确保它是一个类似数组的变量,以便您可以为其下标。
编辑
根据您的编辑,请确认代码中提到的范围内self.D[i]
的所有人是否也类似于数组。i
你可以通过简单地做到这一点
print([type(self.D[i]) for i in range(self.tuple_num))
分享此代码的响应,以便我进一步提供帮助。
编辑-2
根据您的评论和编辑的代码片段,这似乎self.D
是某个map
函数的输出。在 python 2 中,map
是一个返回列表的函数。然而,在 python3map
中是一个类,当被调用时,它会创建一个地图对象。
解决这个问题的最简单方法是找出self.D
第一次分配的行,以及 RHS 中的任何代码,用list(...)
函数包装它。
或者,就在这条线之后
T=map(list,zip(*self.D))
添加以下内容
self.D = list(self.D)
希望这能解决问题
推荐阅读
- javascript - Vue 3:带有验证器的道具 => 声称其他道具不存在的 TypeScript 错误
- java - 如何更新此杰克逊 JsonNode 中的某个值?
- python - 膨胀多边形以允许在 sjoin 中使用“包含”的错误
- python - 如何计算列表中每个唯一出现的类?(Python)
- sql - 如何在sql developer中将包含blob的oracle表导出为列
- javascript - 回调在 JavaScript 中让我困惑
- swift - HStack 和 TextField 的角半径未更新
- javascript - 用户在 Vue.js 中成功提交表单时如何清除表单输入字段?
- ckeditor - ckeditor cdn - 已经有值的文本区域不允许点击
- excel - 根据单元格值选择一个范围并将其复制到另一个工作簿中