从包含每个键的多个项目的字典中读取值,Python

时间:2013-06-26 07:38:55

标签: python list dictionary

在论坛中有一些帮助我已经创建了一个脚本来排序文件并从几个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

1 个答案:

答案 0 :(得分:0)

val_dict.get(weightvalue)从输入的密钥中获取(在这种情况下,您尝试获取密钥权重值的值)。没有weightvalue密钥,因此返回None

你可能想要的是val_dict.get(filename)[0],它返回文件名值中的第一个元素。

您也没有理由使用eval()。使用int()将字符串转换为整数。