0

フォーラムの助けを借りて、これらのデータをスクリプトに書き込むスクリプトに加えて、ファイルを並べ替えて複数の Excel ファイルからデータを読み取るスクリプトを作成しました。Excelドキュメントをソートすると、出力は次のようになります。

   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」を使用したいと考えています。以下は、各ドキュメントの「 weightvalue 」とユーザー定義の「inputweight」基づいて、スケーリング係数として x1 値を計算する関数 *"scale_weight"* です。これまでのところ、dict から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値は、ユーザー定義の入力重みを各 Excel ファイルの重み値で割った値に等しくなります。

アップデート

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
4

1 に答える 1

0

val_dict.get(weightvalue)入力されたキーから値を取得します (この場合、キー weightvalue の値を取得しようとしています)。キーがないweightvalueので、これは を返しますNone

おそらく必要なのはval_dict.get(filename)[0]、ファイル名の値の最初の要素を返すことです。

を使用する理由もありませんeval()int()文字列を整数に変換するために使用します。

于 2013-06-26T07:42:14.153 に答える