0

まず第一に、私の問題を見ていただきありがとうございます。私が解決しなければならない問題に対して私が考えている解決策を単に説明するのではなく、代わりの解決策のアイデアを提案できるようにするためにも、問題の概要を説明するのが最善だと思います. この解決策を達成するためのより良い方法がある可能性が高いです。

私が持っている問題:

関連するスコアランクとその他の関連する値を持つ名前のリストを生成します。これらのリストは毎日生成されますが、一部の名前を削除する必要があるため、日が進むにつれて変更する必要があります。現在、これらの名前のリストは、次のデータ型を次の形式で含む Excel ベースのシートで作成されています。

(Unique List Title)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)

(Unique List Title)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)

例えば;

Mrs Dodgsons class
Rosie,1,123.8,5
James,2,122.6,7
Chris,3,120.4,12

Dr Clements class
Hannah,1,126.9,2.56
Gill,2,124.54,6.89
Jack,3,122.04,15.62
Jamie,4,121.09,20.91

今、私が持っているのは、上記の Excel 生成リストから削除する必要があるユーザーの別のリストです (この小さなプロジェクトの最終製品は、変更された Excel ドキュメントを再保存しないことを心配しないでください)。このリストは Web 経由で生成されます。 2分ごとに更新されるスクレーパー。この問題に対する実行可能な解決策として私が現在認識している方法は、CSV 内の各リストを SET として保存するコードを使用することです (これが可能な場合)。次に、一意の名前を見つけたら、それらをセットから削除します。 /s で発生します。

Pythonフォーラムへの私の質問は次のとおりです。

  1. 一意に名前が付けられた複数の SET (1 日あたり最大 60 個) の生成に関して実行可能な提案された方法論です。
  2. 同じ結果を達成するためのより良い方法はありますか?

ヘルプやコメントをいただければ幸いです

よろしくAEA

4

1 に答える 1

3

セットとは異なり、辞書はデータの項目をコレクションの各メンバーに関連付ける自然な方法を提供するため、セットよりも辞書を使用する方がおそらく簡単です。

これは、各クラスのデータがディクショナリに格納され、その各キーが学生の名前であり、その値が各学生のスコアなどのリストである 1 つのアプローチです。

data = {
    "Mrs Dodgson": {
        "Rosie": [1,123.8,5],
        "James": [2,122.6,7],
        "Chris": [3,120.4,12]
    },
    "Dr Clement": {
        "Hannah": [1,126.9,2.56],
        "Gill": [2,124.54,6.89],
        "Jack": [3,122.04,15.62],
        "Jamie": [4,121.09,20.91]
    }
}

to_remove = ["Jamie", "Rosie"]

# Mrs. Dodgson's class data, initially.
print data["Mrs Dodgson"]

# Now remove the student data.
for cls_data in data.values():
    for student in to_remove:
        try:
            del cls_data[student]
        except KeyError:
            pass

print data["Mrs Dodgson"]
于 2013-07-07T22:54:21.400 に答える