在论坛中有一些帮助我已经创建了一个脚本来排序文件并从几个Excelfiles读取数据,此外还有一个将这些数据写入脚本的脚本。从排序exceldocuments开始,输出如下所示:
C:/eclipse/TST-folder\kop_tstdoc.xls
C:/eclipse/TST-folder\tstdoc.xls
之后,我将这些数据读入一个脚本,该脚本提取出我感兴趣的单元格值,并将这些数据写入名为*“val_dict”*的字典中。这个dict是这样构建的:
val_dict[filename] = [weightvalue, lenghtvalue, speedvalue]
完成的dict将包含越来越多的文件和值,已经传递了50个.xls文件。 dict的输出看起来像这样:
{'C:/eclipse/TST-folder\\kop_tstdoc.xls': [10.0, 21.0, 30.0],
'C:/eclipse/TST-folder\\tstdoc.xls': [3.0, 5.0, 5.0]}
我想在函数中使用“weightvalue”来将数据缩放到适合测试建模的大小。下面是函数*“scale_weight”*,它应该根据每个文档的“weightvalue 和用户定义的计算 x1 值作为缩放因子“inputweight”。 我在从字典中读取 weightvalue 时遇到问题,因为到目前为止我已经使用了文件名,整个列表等等,而不是从我的字典中提取 weightvalue 字典。任何人都可以给我提示,或者可能采取不同的方法来做到这一点? 以下缩放的脚本:
def scale_weight(): # Repeat for each value.
for filename in val_dict:
for x1 in range(len(val_dict)):
values = val_dict.get(weightvalue) #want "weightvalue" from dict here
x1 = eval(inputweight) / eval(values)
return x1
for x1 in scale_weight():
print x1
我希望这个脚本是为我的字典中的每个文件名返回 x1 值,其中 x1 值等于userdefined inputweight < / em>除以每个Excel文件中的 weightvalue 。
更新
val_dict output looks like this:
{'C:/eclipse/TST-folder\\kop_tstdoc.xls': [10.0, 21.0, 30.0],
'C:/eclipse/TST-folder\\tstdoc.xls': [3.0, 5.0, 5.0]}
修改过的脚本:
inputweight = int(raw_input('Insert weight'))
def scale_weight():
for filename in val_dict:
values = val_dict.get(filename)[0]
x1 = float(inputweight) / float(int(values))
return x1
答案 0 :(得分:0)
val_dict.get(weightvalue)
从输入的密钥中获取值(在这种情况下,您尝试获取密钥权重值的值)。没有weightvalue
密钥,因此返回None
。
你可能想要的是val_dict.get(filename)[0]
,它返回文件名值中的第一个元素。
您也没有理由使用eval()
。使用int()
将字符串转换为整数。